diff options
Diffstat (limited to 'cc/sdk_test.go')
-rw-r--r-- | cc/sdk_test.go | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/cc/sdk_test.go b/cc/sdk_test.go index 61925e30c..790440cb9 100644 --- a/cc/sdk_test.go +++ b/cc/sdk_test.go @@ -101,3 +101,95 @@ func TestSdkMutator(t *testing.T) { assertDep(t, libsdkNDK, libcxxNDK) assertDep(t, libsdkPlatform, libcxxPlatform) } + +func TestMakeModuleNameForSdkVariant(t *testing.T) { + bp := ` + cc_library { + name: "libfoo", + srcs: ["main_test.cpp"], + sdk_version: "current", + stl: "none", + } + ` + platformVariant := "android_arm64_armv8-a_shared" + sdkVariant := "android_arm64_armv8-a_sdk_shared" + testCases := []struct { + name string + unbundledApps []string + variant string + skipInstall bool // soong skips install + hideFromMake bool // no make entry + makeUninstallable bool // make skips install + makeModuleName string + }{ + { + name: "platform variant in normal builds", + unbundledApps: nil, + variant: platformVariant, + // installable in soong + skipInstall: false, + // visiable in Make as "libfoo" + hideFromMake: false, + makeModuleName: "libfoo", + // installable in Make + makeUninstallable: false, + }, + { + name: "sdk variant in normal builds", + unbundledApps: nil, + variant: sdkVariant, + // soong doesn't install + skipInstall: true, + // visible in Make as "libfoo.sdk" + hideFromMake: false, + makeModuleName: "libfoo.sdk", + // but not installed + makeUninstallable: true, + }, + { + name: "platform variant in unbunded builds", + unbundledApps: []string{"bar"}, + variant: platformVariant, + // installable in soong + skipInstall: false, + // hidden from make + hideFromMake: true, + }, + { + name: "sdk variant in unbunded builds", + unbundledApps: []string{"bar"}, + variant: sdkVariant, + // soong doesn't install + skipInstall: true, + // visible in Make as "libfoo" + hideFromMake: false, + makeModuleName: "libfoo", + // but not installed + makeUninstallable: true, + }, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + fixture := android.GroupFixturePreparers(prepareForCcTest, + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.Unbundled_build_apps = tc.unbundledApps + }), + ) + ctx := fixture.RunTestWithBp(t, bp).TestContext + module := ctx.ModuleForTests("libfoo", tc.variant).Module().(*Module) + android.AssertBoolEquals(t, "IsSkipInstall", tc.skipInstall, module.IsSkipInstall()) + android.AssertBoolEquals(t, "HideFromMake", tc.hideFromMake, module.HiddenFromMake()) + if !tc.hideFromMake { + entries := android.AndroidMkEntriesForTest(t, ctx, module)[0] + android.AssertStringEquals(t, "LOCAL_MODULE", + tc.makeModuleName, entries.EntryMap["LOCAL_MODULE"][0]) + actualUninstallable := false + if actual, ok := entries.EntryMap["LOCAL_UNINSTALLABLE_MODULE"]; ok { + actualUninstallable = "true" == actual[0] + } + android.AssertBoolEquals(t, "LOCAL_UNINSTALLABLE_MODULE", + tc.makeUninstallable, actualUninstallable) + } + }) + } +} |