Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57e60bf8 authored by Zi Wang's avatar Zi Wang Committed by Gerrit Code Review
Browse files

Merge "Use correct module name for java_import in shouldConvertWithBp2build verification" into main

parents 6525ee82 734266b6
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -544,7 +544,17 @@ func (b *BazelModuleBase) shouldConvertWithBp2build(ctx shouldConvertModuleConte
	}

	moduleName := moduleNameWithPossibleOverride(ctx, module, p.moduleName)
	// use "prebuilt_" + original module name as the java_import(_host) module name,
	// to avoid the failure that a normal module and a prebuilt module with
	// the same name are both allowlisted. This cannot be applied to all the *_import
	// module types. For example, android_library_import has to use original module
	// name here otherwise the *-nodeps targets cannot be handled correctly.
	if strings.HasPrefix(p.moduleType, "java_import") {
		moduleName = module.Name()
	}

	allowlist := ctx.Config().Bp2buildPackageConfig

	moduleNameAllowed := allowlist.moduleAlwaysConvert[moduleName]
	moduleTypeAllowed := allowlist.moduleTypeAlwaysConvert[p.moduleType]
	allowlistConvert := moduleNameAllowed || moduleTypeAllowed
+35 −0
Original line number Diff line number Diff line
@@ -21,6 +21,13 @@ import (
	"testing"
)

func runJavaImportTestCaseWithRegistrationCtxFunc(t *testing.T, tc Bp2buildTestCase, registrationCtxFunc func(ctx android.RegistrationContext)) {
	t.Helper()
	(&tc).ModuleTypeUnderTest = "java_import"
	(&tc).ModuleTypeUnderTestFactory = java.ImportFactory
	RunBp2BuildTestCase(t, registrationCtxFunc, tc)
}

func runJavaImportTestCase(t *testing.T, tc Bp2buildTestCase) {
	t.Helper()
	RunBp2BuildTestCase(t, registerJavaImportModuleTypes, tc)
@@ -120,3 +127,31 @@ java_import_host {
			}),
		}})
}

func TestJavaImportSameNameAsJavaLibrary(t *testing.T) {
	runJavaImportTestCaseWithRegistrationCtxFunc(t, Bp2buildTestCase{
		Description: "java_import has the same name as other package java_library's",
		Filesystem: map[string]string{
			"foo/bar/Android.bp": simpleModule("java_library", "test_lib"),
			"test.jar":           "",
		},
		Blueprint: `java_import {
    name: "test_lib",
    jars: ["test.jar"],
    bazel_module: { bp2build_available: true },
}
`,
		ExpectedBazelTargets: []string{
			MakeBazelTarget("java_import", "test_lib", AttrNameToString{
				"jars": `["test.jar"]`,
			}),
			MakeBazelTarget("java_library", "test_lib-neverlink", AttrNameToString{
				"exports":     `[":test_lib"]`,
				"neverlink":   `True`,
				"sdk_version": `"none"`,
			}),
		},
	}, func(ctx android.RegistrationContext) {
		ctx.RegisterModuleType("java_library", java.LibraryFactory)
	})
}
+25 −0
Original line number Diff line number Diff line
@@ -1041,3 +1041,28 @@ filegroup {
		ctx.RegisterModuleType("filegroup", android.FileGroupFactory)
	})
}

func TestJavaLibrarySameNameAsPrebuilt(t *testing.T) {
	runJavaLibraryTestCaseWithRegistrationCtxFunc(t, Bp2buildTestCase{
		Description: "java_library and prebuilt module have the same name",
		Filesystem: map[string]string{
			"foo/bar/Android.bp": simpleModule("java_import", "test_lib"),
		},
		Blueprint: `java_library {
    name: "test_lib",
    srcs: ["a.java"],
    sdk_version: "current",
    bazel_module: { bp2build_available: true },
}
`,
		ExpectedBazelTargets: []string{
			MakeBazelTarget("java_library", "test_lib", AttrNameToString{
				"srcs":        `["a.java"]`,
				"sdk_version": `"current"`,
			}),
			MakeNeverlinkDuplicateTarget("java_library", "test_lib"),
		},
	}, func(ctx android.RegistrationContext) {
		ctx.RegisterModuleType("java_import", java.ImportFactory)
	})
}