support for multiple filegroups and resource_dirs
Test: tests in bp2build and b build //external/emma:emma
Change-Id: I57e60389aec926c55d01818a6a3b1ec33e9c53b8
diff --git a/bp2build/java_library_conversion_test.go b/bp2build/java_library_conversion_test.go
index c501a7b..5c769a5 100644
--- a/bp2build/java_library_conversion_test.go
+++ b/bp2build/java_library_conversion_test.go
@@ -391,18 +391,56 @@
})
}
-func TestJavaLibraryResourcesFailsWithMultipleDirs(t *testing.T) {
+func TestJavaLibraryResourcesWithMultipleDirs(t *testing.T) {
runJavaLibraryTestCase(t, Bp2buildTestCase{
Filesystem: map[string]string{
"res/a.res": "",
- "res1/a.res": "",
+ "res1/b.res": "",
},
Blueprint: `java_library {
name: "java-lib-1",
java_resource_dirs: ["res", "res1"],
}`,
- ExpectedErr: fmt.Errorf("bp2build does not support more than one directory in java_resource_dirs (b/226423379)"),
- ExpectedBazelTargets: []string{},
+ ExpectedBazelTargets: []string{
+ MakeBazelTarget("java_resources", "java-lib-1_resource_dir_res1", AttrNameToString{
+ "resource_strip_prefix": `"res1"`,
+ "resources": `["res1/b.res"]`,
+ }),
+ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
+ "additional_resources": `["java-lib-1_resource_dir_res1"]`,
+ "resources": `["res/a.res"]`,
+ "resource_strip_prefix": `"res"`,
+ }),
+ MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"),
+ },
+ })
+}
+
+func TestJavaLibraryJavaResourcesAndResourceDirs(t *testing.T) {
+ runJavaLibraryTestCase(t, Bp2buildTestCase{
+ Filesystem: map[string]string{
+ "resdir/a.res": "",
+ },
+ Blueprint: `java_library {
+ name: "java-lib-1",
+ java_resources: ["res1", "res2"],
+ java_resource_dirs: ["resdir"],
+}`,
+ ExpectedBazelTargets: []string{
+ MakeBazelTarget("java_resources", "java-lib-1_resource_dir_resdir", AttrNameToString{
+ "resource_strip_prefix": `"resdir"`,
+ "resources": `["resdir/a.res"]`,
+ }),
+ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
+ "additional_resources": `["java-lib-1_resource_dir_resdir"]`,
+ "resource_strip_prefix": `"."`,
+ "resources": `[
+ "res1",
+ "res2",
+ ]`,
+ }),
+ MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"),
+ },
})
}
@@ -878,3 +916,57 @@
ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
})
}
+
+func TestJavaLibraryJavaResourcesMultipleFilegroup(t *testing.T) {
+ runJavaLibraryTestCaseWithRegistrationCtxFunc(t, Bp2buildTestCase{
+ Filesystem: map[string]string{
+ "a.res": "",
+ },
+ Description: "with java_resources that has multiple filegroups",
+ Blueprint: `java_library {
+ name: "java-lib-1",
+ srcs: ["a.java"],
+ java_resources: ["a.res", ":filegroup1", ":filegroup2"],
+ bazel_module: { bp2build_available: true },
+}
+
+filegroup {
+ name: "filegroup1",
+ path: "foo",
+ srcs: ["foo/a"],
+}
+
+filegroup {
+ name: "filegroup2",
+ path: "bar",
+ srcs: ["bar/a"],
+}
+`,
+ ExpectedBazelTargets: []string{
+ MakeBazelTarget("java_resources", "java-lib-1_filegroup_resources_filegroup1", AttrNameToString{
+ "resource_strip_prefix": `"foo"`,
+ "resources": `[":filegroup1"]`,
+ }),
+ MakeBazelTarget("java_resources", "java-lib-1_filegroup_resources_filegroup2", AttrNameToString{
+ "resource_strip_prefix": `"bar"`,
+ "resources": `[":filegroup2"]`,
+ }),
+ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{
+ "srcs": `["a.java"]`,
+ "resources": `["a.res"]`,
+ "resource_strip_prefix": `"."`,
+ "additional_resources": `[
+ "java-lib-1_filegroup_resources_filegroup1",
+ "java-lib-1_filegroup_resources_filegroup2",
+ ]`,
+ }),
+ MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"),
+ MakeBazelTargetNoRestrictions("filegroup", "filegroup1", AttrNameToString{
+ "srcs": `["foo/a"]`}),
+ MakeBazelTargetNoRestrictions("filegroup", "filegroup2", AttrNameToString{
+ "srcs": `["bar/a"]`}),
+ },
+ }, func(ctx android.RegistrationContext) {
+ ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
+ })
+}