diff options
Diffstat (limited to 'cc/cc_test.go')
-rw-r--r-- | cc/cc_test.go | 698 |
1 files changed, 0 insertions, 698 deletions
diff --git a/cc/cc_test.go b/cc/cc_test.go index 710b72b6c..a1842d7f7 100644 --- a/cc/cc_test.go +++ b/cc/cc_test.go @@ -26,7 +26,6 @@ import ( "android/soong/aidl_library" "android/soong/android" - "android/soong/bazel/cquery" ) func init() { @@ -46,27 +45,15 @@ var prepareForCcTest = android.GroupFixturePreparers( }), ) -var ccLibInApex = "cc_lib_in_apex" var apexVariationName = "apex28" var apexVersion = "28" func registerTestMutators(ctx android.RegistrationContext) { ctx.PostDepsMutators(func(ctx android.RegisterMutatorsContext) { ctx.BottomUp("apex", testApexMutator).Parallel() - ctx.BottomUp("mixed_builds_prep", mixedBuildsPrepareMutator).Parallel() }) } -func mixedBuildsPrepareMutator(ctx android.BottomUpMutatorContext) { - if m := ctx.Module(); m.Enabled() { - if mixedBuildMod, ok := m.(android.MixedBuildBuildable); ok { - if mixedBuildMod.IsMixedBuildSupported(ctx) && android.MixedBuildsEnabled(ctx) == android.MixedBuildEnabled { - mixedBuildMod.QueueBazelCall(ctx) - } - } - } -} - func testApexMutator(mctx android.BottomUpMutatorContext) { modules := mctx.CreateVariations(apexVariationName) apexInfo := android.ApexInfo{ @@ -2929,258 +2916,6 @@ func TestStaticLibDepExport(t *testing.T) { checkStaticLibs(t, []string{"lib1", "libc++_static", "libc++demangle", "libclang_rt.builtins"}, module) } -func TestLibDepAndroidMkExportInMixedBuilds(t *testing.T) { - bp := ` - cc_library { - name: "static_dep", - } - cc_library { - name: "whole_static_dep", - } - cc_library { - name: "shared_dep", - } - cc_library { - name: "lib", - bazel_module: { label: "//:lib" }, - static_libs: ["static_dep"], - whole_static_libs: ["whole_static_dep"], - shared_libs: ["shared_dep"], - } - cc_test { - name: "test", - bazel_module: { label: "//:test" }, - static_libs: ["static_dep"], - whole_static_libs: ["whole_static_dep"], - shared_libs: ["shared_dep"], - gtest: false, - sanitize: { - // cc_test modules default to memtag_heap: true, - // but this adds extra dependencies that we don't care about - never: true, - } - } - cc_binary { - name: "binary", - bazel_module: { label: "//:binary" }, - static_libs: ["static_dep"], - whole_static_libs: ["whole_static_dep"], - shared_libs: ["shared_dep"], - } - cc_library_headers { - name: "lib_headers", - bazel_module: { label: "//:lib_headers" }, - static_libs: ["static_dep"], - whole_static_libs: ["whole_static_dep"], - shared_libs: ["shared_dep"], - } - cc_prebuilt_library { - name: "lib_prebuilt", - bazel_module: { label: "//:lib_prebuilt" }, - static_libs: ["static_dep"], - whole_static_libs: ["whole_static_dep"], - shared_libs: ["shared_dep"], - } - ` - - testCases := []struct { - name string - moduleName string - variant string - androidMkInfo cquery.CcAndroidMkInfo - }{ - { - name: "shared lib", - moduleName: "lib", - variant: "android_arm64_armv8-a_shared", - androidMkInfo: cquery.CcAndroidMkInfo{ - LocalStaticLibs: []string{"static_dep"}, - LocalWholeStaticLibs: []string{"whole_static_dep"}, - LocalSharedLibs: []string{"shared_dep"}, - }, - }, - { - name: "static lib", - moduleName: "lib", - variant: "android_arm64_armv8-a_static", - androidMkInfo: cquery.CcAndroidMkInfo{ - LocalStaticLibs: []string{"static_dep"}, - LocalWholeStaticLibs: []string{"whole_static_dep"}, - LocalSharedLibs: []string{"shared_dep"}, - }, - }, - { - name: "cc_test arm64", - moduleName: "test", - variant: "android_arm64_armv8-a", - androidMkInfo: cquery.CcAndroidMkInfo{ - LocalStaticLibs: []string{"static_dep"}, - LocalWholeStaticLibs: []string{"whole_static_dep"}, - LocalSharedLibs: []string{"shared_dep"}, - }, - }, - { - name: "cc_test arm", - moduleName: "test", - variant: "android_arm_armv7-a-neon", - androidMkInfo: cquery.CcAndroidMkInfo{ - LocalStaticLibs: []string{"static_dep"}, - LocalWholeStaticLibs: []string{"whole_static_dep"}, - LocalSharedLibs: []string{"shared_dep"}, - }, - }, - { - name: "cc_binary", - moduleName: "binary", - variant: "android_arm64_armv8-a", - androidMkInfo: cquery.CcAndroidMkInfo{ - LocalStaticLibs: []string{"static_dep"}, - LocalWholeStaticLibs: []string{"whole_static_dep"}, - LocalSharedLibs: []string{"shared_dep"}, - }, - }, - { - name: "cc_library_headers", - moduleName: "lib_headers", - variant: "android_arm64_armv8-a", - androidMkInfo: cquery.CcAndroidMkInfo{ - LocalStaticLibs: []string{"static_dep"}, - LocalWholeStaticLibs: []string{"whole_static_dep"}, - LocalSharedLibs: []string{"shared_dep"}, - }, - }, - { - name: "prebuilt lib static", - moduleName: "lib_prebuilt", - variant: "android_arm64_armv8-a_static", - androidMkInfo: cquery.CcAndroidMkInfo{ - LocalStaticLibs: []string{"static_dep"}, - LocalWholeStaticLibs: []string{"whole_static_dep"}, - LocalSharedLibs: []string{"shared_dep"}, - }, - }, - { - name: "prebuilt lib shared", - moduleName: "lib_prebuilt", - variant: "android_arm64_armv8-a_shared", - androidMkInfo: cquery.CcAndroidMkInfo{ - LocalStaticLibs: []string{"static_dep"}, - LocalWholeStaticLibs: []string{"whole_static_dep"}, - LocalSharedLibs: []string{"shared_dep"}, - }, - }, - } - - outputBaseDir := "out/bazel" - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - result := android.GroupFixturePreparers( - prepareForCcTest, - android.FixtureModifyConfig(func(config android.Config) { - config.BazelContext = android.MockBazelContext{ - OutputBaseDir: outputBaseDir, - LabelToCcInfo: map[string]cquery.CcInfo{ - "//:lib": cquery.CcInfo{ - CcAndroidMkInfo: tc.androidMkInfo, - RootDynamicLibraries: []string{""}, - }, - "//:lib_bp2build_cc_library_static": cquery.CcInfo{ - CcAndroidMkInfo: tc.androidMkInfo, - RootStaticArchives: []string{""}, - }, - "//:lib_headers": cquery.CcInfo{ - CcAndroidMkInfo: tc.androidMkInfo, - OutputFiles: []string{""}, - }, - "//:lib_prebuilt": cquery.CcInfo{ - CcAndroidMkInfo: tc.androidMkInfo, - }, - "//:lib_prebuilt_bp2build_cc_library_static": cquery.CcInfo{ - CcAndroidMkInfo: tc.androidMkInfo, - }, - }, - LabelToCcBinary: map[string]cquery.CcUnstrippedInfo{ - "//:test__tf_internal": cquery.CcUnstrippedInfo{ - CcAndroidMkInfo: tc.androidMkInfo, - }, - "//:binary": cquery.CcUnstrippedInfo{ - CcAndroidMkInfo: tc.androidMkInfo, - }, - }, - } - }), - ).RunTestWithBp(t, bp) - ctx := result.TestContext - - module := ctx.ModuleForTests(tc.moduleName, tc.variant).Module().(*Module) - entries := android.AndroidMkEntriesForTest(t, ctx, module)[0] - if !reflect.DeepEqual(module.Properties.AndroidMkStaticLibs, tc.androidMkInfo.LocalStaticLibs) { - t.Errorf("incorrect static_libs"+ - "\nactual: %v"+ - "\nexpected: %v", - module.Properties.AndroidMkStaticLibs, - tc.androidMkInfo.LocalStaticLibs, - ) - } - staticDepsDiffer, missingStaticDeps, additionalStaticDeps := android.ListSetDifference( - entries.EntryMap["LOCAL_STATIC_LIBRARIES"], - tc.androidMkInfo.LocalStaticLibs, - ) - if staticDepsDiffer { - t.Errorf( - "expected LOCAL_STATIC_LIBRARIES to be %q but was %q; missing: %q; extra %q", - tc.androidMkInfo.LocalStaticLibs, - entries.EntryMap["LOCAL_STATIC_LIBRARIES"], - missingStaticDeps, - additionalStaticDeps, - ) - } - - if !reflect.DeepEqual(module.Properties.AndroidMkWholeStaticLibs, tc.androidMkInfo.LocalWholeStaticLibs) { - t.Errorf("expected module.Properties.AndroidMkWholeStaticLibs to be %q, but was %q", - tc.androidMkInfo.LocalWholeStaticLibs, - module.Properties.AndroidMkWholeStaticLibs, - ) - } - wholeStaticDepsDiffer, missingWholeStaticDeps, additionalWholeStaticDeps := android.ListSetDifference( - entries.EntryMap["LOCAL_WHOLE_STATIC_LIBRARIES"], - tc.androidMkInfo.LocalWholeStaticLibs, - ) - if wholeStaticDepsDiffer { - t.Errorf( - "expected LOCAL_WHOLE_STATIC_LIBRARIES to be %q but was %q; missing: %q; extra %q", - tc.androidMkInfo.LocalWholeStaticLibs, - entries.EntryMap["LOCAL_WHOLE_STATIC_LIBRARIES"], - missingWholeStaticDeps, - additionalWholeStaticDeps, - ) - } - - if !reflect.DeepEqual(module.Properties.AndroidMkSharedLibs, tc.androidMkInfo.LocalSharedLibs) { - t.Errorf("incorrect shared_libs"+ - "\nactual: %v"+ - "\nexpected: %v", - module.Properties.AndroidMkSharedLibs, - tc.androidMkInfo.LocalSharedLibs, - ) - } - sharedDepsDiffer, missingSharedDeps, additionalSharedDeps := android.ListSetDifference( - entries.EntryMap["LOCAL_SHARED_LIBRARIES"], - tc.androidMkInfo.LocalSharedLibs, - ) - if sharedDepsDiffer { - t.Errorf( - "expected LOCAL_SHARED_LIBRARIES to be %q but was %q; missing %q; extra %q", - tc.androidMkInfo.LocalSharedLibs, - entries.EntryMap["LOCAL_SHARED_LIBRARIES"], - missingSharedDeps, - additionalSharedDeps, - ) - } - }) - } -} - var compilerFlagsTestCases = []struct { in string out bool @@ -3522,130 +3257,6 @@ func TestStubsForLibraryInMultipleApexes(t *testing.T) { } } -func TestMixedBuildUsesStubs(t *testing.T) { - t.Parallel() - bp := ` - cc_library_shared { - name: "libFoo", - bazel_module: { label: "//:libFoo" }, - srcs: ["foo.c"], - stubs: { - symbol_file: "foo.map.txt", - versions: ["current"], - }, - apex_available: ["bar", "a1"], - } - - cc_library_shared { - name: "libBar", - srcs: ["bar.c"], - shared_libs: ["libFoo"], - apex_available: ["a1"], - } - - cc_library_shared { - name: "libA1", - srcs: ["a1.c"], - shared_libs: ["libFoo"], - apex_available: ["a1"], - } - - cc_library_shared { - name: "libBarA1", - srcs: ["bara1.c"], - shared_libs: ["libFoo"], - apex_available: ["bar", "a1"], - } - - cc_library_shared { - name: "libAnyApex", - srcs: ["anyApex.c"], - shared_libs: ["libFoo"], - apex_available: ["//apex_available:anyapex"], - } - - cc_library_shared { - name: "libBaz", - srcs: ["baz.c"], - shared_libs: ["libFoo"], - apex_available: ["baz"], - } - - cc_library_shared { - name: "libQux", - srcs: ["qux.c"], - shared_libs: ["libFoo"], - apex_available: ["qux", "bar"], - }` - - result := android.GroupFixturePreparers( - prepareForCcTest, - android.FixtureModifyConfig(func(config android.Config) { - config.BazelContext = android.MockBazelContext{ - OutputBaseDir: "out/bazel", - LabelToCcInfo: map[string]cquery.CcInfo{ - "//:libFoo": { - RootDynamicLibraries: []string{"libFoo.so"}, - }, - "//:libFoo_stub_libs-current": { - RootDynamicLibraries: []string{"libFoo_stub_libs-current.so"}, - }, - }, - } - }), - ).RunTestWithBp(t, bp) - ctx := result.TestContext - - variants := ctx.ModuleVariantsForTests("libFoo") - expectedVariants := []string{ - "android_arm64_armv8-a_shared", - "android_arm64_armv8-a_shared_current", - "android_arm_armv7-a-neon_shared", - "android_arm_armv7-a-neon_shared_current", - } - variantsMismatch := false - if len(variants) != len(expectedVariants) { - variantsMismatch = true - } else { - for _, v := range expectedVariants { - if !inList(v, variants) { - variantsMismatch = false - } - } - } - if variantsMismatch { - t.Errorf("variants of libFoo expected:\n") - for _, v := range expectedVariants { - t.Errorf("%q\n", v) - } - t.Errorf(", but got:\n") - for _, v := range variants { - t.Errorf("%q\n", v) - } - } - - linkAgainstFoo := []string{"libBarA1"} - linkAgainstFooStubs := []string{"libBar", "libA1", "libBaz", "libQux", "libAnyApex"} - - libFooPath := "out/bazel/execroot/__main__/libFoo.so" - for _, lib := range linkAgainstFoo { - libLinkRule := ctx.ModuleForTests(lib, "android_arm64_armv8-a_shared").Rule("ld") - libFlags := libLinkRule.Args["libFlags"] - if !strings.Contains(libFlags, libFooPath) { - t.Errorf("%q: %q is not found in %q", lib, libFooPath, libFlags) - } - } - - libFooStubPath := "out/bazel/execroot/__main__/libFoo_stub_libs-current.so" - for _, lib := range linkAgainstFooStubs { - libLinkRule := ctx.ModuleForTests(lib, "android_arm64_armv8-a_shared").Rule("ld") - libFlags := libLinkRule.Args["libFlags"] - if !strings.Contains(libFlags, libFooStubPath) { - t.Errorf("%q: %q is not found in %q", lib, libFooStubPath, libFlags) - } - } -} - func TestVersioningMacro(t *testing.T) { t.Parallel() for _, tc := range []struct{ moduleName, expected string }{ @@ -4019,9 +3630,6 @@ func TestDefaults(t *testing.T) { shared: { srcs: ["baz.c"], }, - bazel_module: { - bp2build_available: true, - }, } cc_library_static { @@ -5150,309 +4758,3 @@ func TestCcBuildBrokenClangCFlags(t *testing.T) { }) } } - -func TestDclaLibraryInApex(t *testing.T) { - t.Parallel() - bp := ` - cc_library_shared { - name: "cc_lib_in_apex", - srcs: ["foo.cc"], - apex_available: ["myapex"], - bazel_module: { label: "//foo/bar:bar" }, - }` - label := "//foo/bar:bar" - arch64 := "arm64_armv8-a" - arch32 := "arm_armv7-a-neon" - apexCfgKey := android.ApexConfigKey{ - WithinApex: true, - ApexSdkVersion: "28", - } - - result := android.GroupFixturePreparers( - prepareForCcTest, - android.FixtureRegisterWithContext(registerTestMutators), - android.FixtureModifyConfig(func(config android.Config) { - config.BazelContext = android.MockBazelContext{ - OutputBaseDir: "outputbase", - LabelToCcInfo: map[string]cquery.CcInfo{ - android.BuildMockBazelContextResultKey(label, arch32, android.Android, apexCfgKey): cquery.CcInfo{ - RootDynamicLibraries: []string{"foo.so"}, - }, - android.BuildMockBazelContextResultKey(label, arch64, android.Android, apexCfgKey): cquery.CcInfo{ - RootDynamicLibraries: []string{"foo.so"}, - }, - }, - BazelRequests: make(map[string]bool), - } - }), - ).RunTestWithBp(t, bp) - ctx := result.TestContext - - // Test if the bazel request is queued correctly - key := android.BuildMockBazelContextRequestKey(label, cquery.GetCcInfo, arch32, android.Android, apexCfgKey) - if !ctx.Config().BazelContext.(android.MockBazelContext).BazelRequests[key] { - t.Errorf("Bazel request was not queued: %s", key) - } - - sharedFoo := ctx.ModuleForTests(ccLibInApex, "android_arm_armv7-a-neon_shared_"+apexVariationName).Module() - producer := sharedFoo.(android.OutputFileProducer) - outputFiles, err := producer.OutputFiles("") - if err != nil { - t.Errorf("Unexpected error getting cc_object outputfiles %s", err) - } - expectedOutputFiles := []string{"outputbase/execroot/__main__/foo.so"} - android.AssertDeepEquals(t, "output files", expectedOutputFiles, outputFiles.Strings()) -} - -func TestDisableSanitizerVariantsInMixedBuilds(t *testing.T) { - t.Parallel() - bp := ` - cc_library_static { - name: "foo_ubsan_minimal", - srcs: ["foo.cc"], - bazel_module: { label: "//foo_ubsan_minimal" }, - sanitize: { - all_undefined: true, - integer_overflow: true, - }, - } - cc_library_static { - name: "foo", - srcs: ["foo.cc"], - bazel_module: { label: "//foo" }, - sanitize: { - address: true, - hwaddress: true, - fuzzer: true, - integer_overflow: true, - scs: true, - }, - } - cc_library_static { - name: "foo_tsan", - srcs: ["foo.cc"], - bazel_module: { label: "//foo_tsan" }, - sanitize: { - thread: true, - }, - } - cc_library_static { - name: "foo_cfi", - srcs: ["foo.cc"], - bazel_module: { label: "//foo_cfi" }, - sanitize: { - cfi: true, - }, - } - cc_library_static { - name: "foo_memtag_stack", - srcs: ["foo.cc"], - bazel_module: { label: "//foo_memtag_stack" }, - sanitize: { - memtag_stack: true, - }, - } - cc_library_static { - name: "foo_memtag_heap", - srcs: ["foo.cc"], - bazel_module: { label: "//foo_memtag_heap" }, - sanitize: { - memtag_heap: true, - }, - } - cc_library_static { - name: "foo_safestack", - srcs: ["foo.cc"], - bazel_module: { label: "//foo_safestack" }, - sanitize: { - safestack: true, - }, - } - cc_library_static { - name: "foo_scudo", - srcs: ["foo.cc"], - bazel_module: { label: "//foo_scudo" }, - sanitize: { - scudo: true, - }, - } - ` - testcases := []struct { - name string - variant string - expectedOutputPaths []string - }{ - { - name: "foo_ubsan_minimal", - variant: "android_arm64_armv8-a_static_apex28", - expectedOutputPaths: []string{ - "outputbase/execroot/__main__/foo_ubsan_minimal.a", - }, - }, - { - name: "foo", - variant: "android_arm64_armv8-a_static_apex28", - expectedOutputPaths: []string{ - "outputbase/execroot/__main__/foo.a", - }, - }, - { - name: "foo", - variant: "android_arm_armv7-a-neon_static_asan_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo/android_arm_armv7-a-neon_static_asan_apex28/foo.a", - }, - }, - { - name: "foo", - variant: "android_arm64_armv8-a_static_hwasan_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo/android_arm64_armv8-a_static_hwasan_apex28/foo.a", - }, - }, - { - name: "foo", - variant: "android_arm64_armv8-a_static_fuzzer_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo/android_arm64_armv8-a_static_fuzzer_apex28/foo.a", - }, - }, - { - name: "foo", - variant: "android_arm_armv7-a-neon_static_asan_fuzzer_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo/android_arm_armv7-a-neon_static_asan_fuzzer_apex28/foo.a", - }, - }, - { - name: "foo", - variant: "android_arm64_armv8-a_static_hwasan_fuzzer_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo/android_arm64_armv8-a_static_hwasan_fuzzer_apex28/foo.a", - }, - }, - { - name: "foo", - variant: "android_arm64_armv8-a_static_scs_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo/android_arm64_armv8-a_static_scs_apex28/foo.a", - }, - }, - { - name: "foo", - variant: "android_arm64_armv8-a_static_hwasan_scs_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo/android_arm64_armv8-a_static_hwasan_scs_apex28/foo.a", - }, - }, - { - name: "foo", - variant: "android_arm64_armv8-a_static_hwasan_scs_fuzzer_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo/android_arm64_armv8-a_static_hwasan_scs_fuzzer_apex28/foo.a", - }, - }, - { - name: "foo_tsan", - variant: "android_arm64_armv8-a_static_apex28", - expectedOutputPaths: []string{ - "outputbase/execroot/__main__/foo_tsan.a", - }, - }, - { - name: "foo_tsan", - variant: "android_arm64_armv8-a_static_tsan_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo_tsan/android_arm64_armv8-a_static_tsan_apex28/foo_tsan.a", - }, - }, - { - name: "foo_cfi", - variant: "android_arm64_armv8-a_static_apex28", - expectedOutputPaths: []string{ - "outputbase/execroot/__main__/foo_cfi.a", - }, - }, - { - name: "foo_cfi", - variant: "android_arm64_armv8-a_static_cfi_apex28", - expectedOutputPaths: []string{ - "outputbase/execroot/__main__/foo_cfi.a", - }, - }, - { - name: "foo_memtag_stack", - variant: "android_arm64_armv8-a_static_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo_memtag_stack/android_arm64_armv8-a_static_apex28/foo_memtag_stack.a", - }, - }, - { - name: "foo_memtag_heap", - variant: "android_arm64_armv8-a_static_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo_memtag_heap/android_arm64_armv8-a_static_apex28/foo_memtag_heap.a", - }, - }, - { - name: "foo_safestack", - variant: "android_arm64_armv8-a_static_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo_safestack/android_arm64_armv8-a_static_apex28/foo_safestack.a", - }, - }, - { - name: "foo_scudo", - variant: "android_arm64_armv8-a_static_apex28", - expectedOutputPaths: []string{ - "out/soong/.intermediates/foo_scudo/android_arm64_armv8-a_static_apex28/foo_scudo.a", - }, - }, - } - - ctx := android.GroupFixturePreparers( - prepareForCcTest, - prepareForAsanTest, - android.FixtureRegisterWithContext(registerTestMutators), - android.FixtureModifyConfig(func(config android.Config) { - config.BazelContext = android.MockBazelContext{ - OutputBaseDir: "outputbase", - LabelToCcInfo: map[string]cquery.CcInfo{ - "//foo_ubsan_minimal": { - RootStaticArchives: []string{"foo_ubsan_minimal.a"}, - }, - "//foo": { - RootStaticArchives: []string{"foo.a"}, - }, - "//foo_tsan": { - RootStaticArchives: []string{"foo_tsan.a"}, - }, - "//foo_cfi": { - RootStaticArchives: []string{"foo_cfi.a"}, - }, - "//foo_memtag_stack": { - RootStaticArchives: []string{"INVALID_ARCHIVE.a"}, - }, - "//foo_memtag_heap": { - RootStaticArchives: []string{"INVALID_ARCHIVE.a"}, - }, - "//foo_safestack": { - RootStaticArchives: []string{"INVALID_ARCHIVE.a"}, - }, - "//foo_scudo": { - RootStaticArchives: []string{"INVALID_ARCHIVE.a"}, - }, - }, - } - }), - ).RunTestWithBp(t, bp).TestContext - - for _, tc := range testcases { - fooMod := ctx.ModuleForTests(tc.name, tc.variant).Module() - outputFiles, err := fooMod.(android.OutputFileProducer).OutputFiles("") - if err != nil { - t.Errorf("Unexpected error getting cc_object outputfiles %s", err) - } - android.AssertPathsRelativeToTopEquals(t, "output files", tc.expectedOutputPaths, outputFiles) - } -} |