Add a test for `java_binary` srcs file types (ignore-relnotes) PiperOrigin-RevId: 974388917 Change-Id: I6288c87f9691f95b9aa4b95db174d9a0f338dd5c
diff --git a/test/java/common/rules/a.foo b/test/java/common/rules/a.foo new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/test/java/common/rules/a.foo
diff --git a/test/java/common/rules/java_binary_tests.bzl b/test/java/common/rules/java_binary_tests.bzl index 20c6ee0..8b688e1 100644 --- a/test/java/common/rules/java_binary_tests.bzl +++ b/test/java/common/rules/java_binary_tests.bzl
@@ -538,6 +538,72 @@ matching.str_matches("deps not allowed without srcs"), ) +def _test_java_binary_srcs_filetypes(name): + util.helper_target( + java_binary, + name = name + "/valid", + srcs = [ + "a.java", + name + "/gmix", + name + "/gvalid", + ], + ) + util.helper_target( + java_binary, + name = name + "/invalid", + srcs = [ + "a.foo", + name + "/ginvalid", + ], + ) + util.helper_target( + java_binary, + name = name + "/mix", + srcs = [ + "a.foo", + "a.java", + ], + ) + util.helper_target( + native.genrule, + name = name + "/gvalid", + outs = [name + "/b.java"], + cmd = "", + ) + util.helper_target( + native.genrule, + name = name + "/ginvalid", + outs = [name + "/b.foo"], + cmd = "", + ) + util.helper_target( + native.genrule, + name = name + "/gmix", + outs = [name + "/c.java", name + "/c.foo"], + cmd = "", + ) + + analysis_test( + name = name, + impl = _test_java_binary_srcs_filetypes_impl, + targets = { + "valid": name + "/valid", + "invalid": name + "/invalid", + "mix": name + "/mix", + }, + expect_failure = True, + ) + +def _test_java_binary_srcs_filetypes_impl(env, targets): + env.expect.that_target(targets.valid).failures().contains_exactly([]) + env.expect.that_target(targets.invalid).failures().contains_at_least_predicates([ + matching.str_matches("'*/ginvalid' does not produce any java_binary srcs files"), + matching.str_matches("source file '*:a.foo' is misplaced here"), + ]) + env.expect.that_target(targets.mix).failures().contains_at_least_predicates([ + matching.str_matches("'*:a.foo' does not produce any java_binary srcs files"), + ]) + def java_binary_tests(name): test_suite( name = name, @@ -557,5 +623,6 @@ _test_java_binary_duplicate_classpath_resources, _test_java_binary_jdeps, _test_java_binary_deps_without_srcs, + _test_java_binary_srcs_filetypes, ], )