Access output files thru providers in Soong tests.

The outputFiles field on ModuleBase will be removed next.

Bug: 358425833
Test: CI
Change-Id: I6d665ac13134d9278e5908f64c454366bc6bca5e
This commit is contained in:
Yu Liu
2024-08-20 23:56:15 +00:00
parent 97bf07a2ef
commit 51c2231eab
10 changed files with 30 additions and 30 deletions

View File

@@ -1038,8 +1038,8 @@ func (m TestingModule) VariablesForTestsRelativeToTop() map[string]string {
// Exits the test immediately if there is an error and // Exits the test immediately if there is an error and
// otherwise returns the result of calling Paths.RelativeToTop // otherwise returns the result of calling Paths.RelativeToTop
// on the returned Paths. // on the returned Paths.
func (m TestingModule) OutputFiles(t *testing.T, tag string) Paths { func (m TestingModule) OutputFiles(ctx *TestContext, t *testing.T, tag string) Paths {
outputFiles := m.Module().base().outputFiles outputFiles := OtherModuleProviderOrDefault(ctx.OtherModuleProviderAdaptor(), m.Module(), OutputFilesProvider)
if tag == "" && outputFiles.DefaultOutputFiles != nil { if tag == "" && outputFiles.DefaultOutputFiles != nil {
return outputFiles.DefaultOutputFiles.RelativeToTop() return outputFiles.DefaultOutputFiles.RelativeToTop()
} else if taggedOutputFiles, hasTag := outputFiles.TaggedOutputFiles[tag]; hasTag { } else if taggedOutputFiles, hasTag := outputFiles.TaggedOutputFiles[tag]; hasTag {

View File

@@ -302,7 +302,7 @@ func TestDataLibs(t *testing.T) {
ctx := testCcWithConfig(t, config) ctx := testCcWithConfig(t, config)
testingModule := ctx.ModuleForTests("main_test", "android_arm_armv7-a-neon") testingModule := ctx.ModuleForTests("main_test", "android_arm_armv7-a-neon")
testBinary := testingModule.Module().(*Module).linker.(*testBinary) testBinary := testingModule.Module().(*Module).linker.(*testBinary)
outputFiles := testingModule.OutputFiles(t, "") outputFiles := testingModule.OutputFiles(ctx, t, "")
if len(outputFiles) != 1 { if len(outputFiles) != 1 {
t.Errorf("expected exactly one output file. output files: [%s]", outputFiles) t.Errorf("expected exactly one output file. output files: [%s]", outputFiles)
return return
@@ -355,7 +355,7 @@ func TestDataLibsRelativeInstallPath(t *testing.T) {
testingModule := ctx.ModuleForTests("main_test", "android_arm_armv7-a-neon") testingModule := ctx.ModuleForTests("main_test", "android_arm_armv7-a-neon")
module := testingModule.Module() module := testingModule.Module()
testBinary := module.(*Module).linker.(*testBinary) testBinary := module.(*Module).linker.(*testBinary)
outputFiles := testingModule.OutputFiles(t, "") outputFiles := testingModule.OutputFiles(ctx, t, "")
if len(outputFiles) != 1 { if len(outputFiles) != 1 {
t.Fatalf("expected exactly one output file. output files: [%s]", outputFiles) t.Fatalf("expected exactly one output file. output files: [%s]", outputFiles)
} }
@@ -1404,7 +1404,7 @@ func TestDataLibsPrebuiltSharedTestLibrary(t *testing.T) {
testingModule := ctx.ModuleForTests("main_test", "android_arm_armv7-a-neon") testingModule := ctx.ModuleForTests("main_test", "android_arm_armv7-a-neon")
module := testingModule.Module() module := testingModule.Module()
testBinary := module.(*Module).linker.(*testBinary) testBinary := module.(*Module).linker.(*testBinary)
outputFiles := testingModule.OutputFiles(t, "") outputFiles := testingModule.OutputFiles(ctx, t, "")
if len(outputFiles) != 1 { if len(outputFiles) != 1 {
t.Errorf("expected exactly one output file. output files: [%s]", outputFiles) t.Errorf("expected exactly one output file. output files: [%s]", outputFiles)
} }
@@ -3111,7 +3111,7 @@ func TestStrippedAllOutputFile(t *testing.T) {
config := TestConfig(t.TempDir(), android.Android, nil, bp, nil) config := TestConfig(t.TempDir(), android.Android, nil, bp, nil)
ctx := testCcWithConfig(t, config) ctx := testCcWithConfig(t, config)
testingModule := ctx.ModuleForTests("test_lib", "android_arm_armv7-a-neon_shared") testingModule := ctx.ModuleForTests("test_lib", "android_arm_armv7-a-neon_shared")
outputFile := testingModule.OutputFiles(t, "stripped_all") outputFile := testingModule.OutputFiles(ctx, t, "stripped_all")
if !strings.HasSuffix(outputFile.Strings()[0], "/stripped_all/test_lib.so") { if !strings.HasSuffix(outputFile.Strings()[0], "/stripped_all/test_lib.so") {
t.Errorf("Unexpected output file: %s", outputFile.Strings()[0]) t.Errorf("Unexpected output file: %s", outputFile.Strings()[0])
return return

View File

@@ -236,7 +236,7 @@ func TestMultilibGenruleOut(t *testing.T) {
} }
` `
result := PrepareForIntegrationTestWithCc.RunTestWithBp(t, bp) result := PrepareForIntegrationTestWithCc.RunTestWithBp(t, bp)
gen_32bit := result.ModuleForTests("gen", "android_arm_armv7-a-neon").OutputFiles(t, "") gen_32bit := result.ModuleForTests("gen", "android_arm_armv7-a-neon").OutputFiles(result.TestContext, t, "")
android.AssertPathsEndWith(t, android.AssertPathsEndWith(t,
"genrule_out", "genrule_out",
[]string{ []string{
@@ -245,7 +245,7 @@ func TestMultilibGenruleOut(t *testing.T) {
gen_32bit, gen_32bit,
) )
gen_64bit := result.ModuleForTests("gen", "android_arm64_armv8-a").OutputFiles(t, "") gen_64bit := result.ModuleForTests("gen", "android_arm64_armv8-a").OutputFiles(result.TestContext, t, "")
android.AssertPathsEndWith(t, android.AssertPathsEndWith(t,
"genrule_out", "genrule_out",
[]string{ []string{

View File

@@ -794,47 +794,47 @@ func TestUbsan(t *testing.T) {
android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in bin_with_ubsan static libs", android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in bin_with_ubsan static libs",
strings.Split(binWithUbsan.Rule("ld").Args["libFlags"], " "), strings.Split(binWithUbsan.Rule("ld").Args["libFlags"], " "),
minimalRuntime.OutputFiles(t, "")[0].String()) minimalRuntime.OutputFiles(result.TestContext, t, "")[0].String())
android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in bin_depends_ubsan_static static libs", android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in bin_depends_ubsan_static static libs",
strings.Split(binDependsUbsan.Rule("ld").Args["libFlags"], " "), strings.Split(binDependsUbsan.Rule("ld").Args["libFlags"], " "),
minimalRuntime.OutputFiles(t, "")[0].String()) minimalRuntime.OutputFiles(result.TestContext, t, "")[0].String())
android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in libsharedubsan static libs", android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in libsharedubsan static libs",
strings.Split(libSharedUbsan.Rule("ld").Args["libFlags"], " "), strings.Split(libSharedUbsan.Rule("ld").Args["libFlags"], " "),
minimalRuntime.OutputFiles(t, "")[0].String()) minimalRuntime.OutputFiles(result.TestContext, t, "")[0].String())
android.AssertStringListDoesNotContain(t, "unexpected libclang_rt.ubsan_minimal in bin_depends_ubsan_shared static libs", android.AssertStringListDoesNotContain(t, "unexpected libclang_rt.ubsan_minimal in bin_depends_ubsan_shared static libs",
strings.Split(binDependsUbsanShared.Rule("ld").Args["libFlags"], " "), strings.Split(binDependsUbsanShared.Rule("ld").Args["libFlags"], " "),
minimalRuntime.OutputFiles(t, "")[0].String()) minimalRuntime.OutputFiles(result.TestContext, t, "")[0].String())
android.AssertStringListDoesNotContain(t, "unexpected libclang_rt.ubsan_minimal in bin_no_ubsan static libs", android.AssertStringListDoesNotContain(t, "unexpected libclang_rt.ubsan_minimal in bin_no_ubsan static libs",
strings.Split(binNoUbsan.Rule("ld").Args["libFlags"], " "), strings.Split(binNoUbsan.Rule("ld").Args["libFlags"], " "),
minimalRuntime.OutputFiles(t, "")[0].String()) minimalRuntime.OutputFiles(result.TestContext, t, "")[0].String())
android.AssertStringListContains(t, "missing -Wl,--exclude-libs for minimal runtime in bin_with_ubsan", android.AssertStringListContains(t, "missing -Wl,--exclude-libs for minimal runtime in bin_with_ubsan",
strings.Split(binWithUbsan.Rule("ld").Args["ldFlags"], " "), strings.Split(binWithUbsan.Rule("ld").Args["ldFlags"], " "),
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base()) "-Wl,--exclude-libs="+minimalRuntime.OutputFiles(result.TestContext, t, "")[0].Base())
android.AssertStringListContains(t, "missing -Wl,--exclude-libs for minimal runtime in bin_depends_ubsan_static static libs", android.AssertStringListContains(t, "missing -Wl,--exclude-libs for minimal runtime in bin_depends_ubsan_static static libs",
strings.Split(binDependsUbsan.Rule("ld").Args["ldFlags"], " "), strings.Split(binDependsUbsan.Rule("ld").Args["ldFlags"], " "),
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base()) "-Wl,--exclude-libs="+minimalRuntime.OutputFiles(result.TestContext, t, "")[0].Base())
android.AssertStringListContains(t, "missing -Wl,--exclude-libs for minimal runtime in libsharedubsan static libs", android.AssertStringListContains(t, "missing -Wl,--exclude-libs for minimal runtime in libsharedubsan static libs",
strings.Split(libSharedUbsan.Rule("ld").Args["ldFlags"], " "), strings.Split(libSharedUbsan.Rule("ld").Args["ldFlags"], " "),
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base()) "-Wl,--exclude-libs="+minimalRuntime.OutputFiles(result.TestContext, t, "")[0].Base())
android.AssertStringListDoesNotContain(t, "unexpected -Wl,--exclude-libs for minimal runtime in bin_depends_ubsan_shared static libs", android.AssertStringListDoesNotContain(t, "unexpected -Wl,--exclude-libs for minimal runtime in bin_depends_ubsan_shared static libs",
strings.Split(binDependsUbsanShared.Rule("ld").Args["ldFlags"], " "), strings.Split(binDependsUbsanShared.Rule("ld").Args["ldFlags"], " "),
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base()) "-Wl,--exclude-libs="+minimalRuntime.OutputFiles(result.TestContext, t, "")[0].Base())
android.AssertStringListDoesNotContain(t, "unexpected -Wl,--exclude-libs for minimal runtime in bin_no_ubsan static libs", android.AssertStringListDoesNotContain(t, "unexpected -Wl,--exclude-libs for minimal runtime in bin_no_ubsan static libs",
strings.Split(binNoUbsan.Rule("ld").Args["ldFlags"], " "), strings.Split(binNoUbsan.Rule("ld").Args["ldFlags"], " "),
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base()) "-Wl,--exclude-libs="+minimalRuntime.OutputFiles(result.TestContext, t, "")[0].Base())
android.AssertStringListContains(t, "missing libclang_rt.ubsan_standalone.static in static_bin_with_ubsan_dep static libs", android.AssertStringListContains(t, "missing libclang_rt.ubsan_standalone.static in static_bin_with_ubsan_dep static libs",
strings.Split(staticBin.Rule("ld").Args["libFlags"], " "), strings.Split(staticBin.Rule("ld").Args["libFlags"], " "),
standaloneRuntime.OutputFiles(t, "")[0].String()) standaloneRuntime.OutputFiles(result.TestContext, t, "")[0].String())
} }

View File

@@ -713,7 +713,7 @@ func CreateTestContext(config android.Config) *android.TestContext {
func checkSnapshotIncludeExclude(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, moduleName, snapshotFilename, subDir, variant string, include bool, fake bool) { func checkSnapshotIncludeExclude(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, moduleName, snapshotFilename, subDir, variant string, include bool, fake bool) {
t.Helper() t.Helper()
mod := ctx.ModuleForTests(moduleName, variant) mod := ctx.ModuleForTests(moduleName, variant)
outputFiles := mod.OutputFiles(t, "") outputFiles := mod.OutputFiles(ctx, t, "")
if len(outputFiles) != 1 { if len(outputFiles) != 1 {
t.Errorf("%q must have single output\n", moduleName) t.Errorf("%q must have single output\n", moduleName)
return return

View File

@@ -159,9 +159,9 @@ func TestAndroidLibraryOutputFilesRel(t *testing.T) {
bar := result.ModuleForTests("bar", "android_common") bar := result.ModuleForTests("bar", "android_common")
baz := result.ModuleForTests("baz", "android_common") baz := result.ModuleForTests("baz", "android_common")
fooOutputPaths := foo.OutputFiles(t, "") fooOutputPaths := foo.OutputFiles(result.TestContext, t, "")
barOutputPaths := bar.OutputFiles(t, "") barOutputPaths := bar.OutputFiles(result.TestContext, t, "")
bazOutputPaths := baz.OutputFiles(t, "") bazOutputPaths := baz.OutputFiles(result.TestContext, t, "")
android.AssertPathsRelativeToTopEquals(t, "foo output path", android.AssertPathsRelativeToTopEquals(t, "foo output path",
[]string{"out/soong/.intermediates/foo/android_common/withres/foo.jar"}, fooOutputPaths) []string{"out/soong/.intermediates/foo/android_common/withres/foo.jar"}, fooOutputPaths)

View File

@@ -119,7 +119,7 @@ func TestAppSplits(t *testing.T) {
foo.Output(expectedOutput) foo.Output(expectedOutput)
} }
outputFiles := foo.OutputFiles(t, "") outputFiles := foo.OutputFiles(ctx, t, "")
android.AssertPathsRelativeToTopEquals(t, `OutputFiles("")`, expectedOutputs, outputFiles) android.AssertPathsRelativeToTopEquals(t, `OutputFiles("")`, expectedOutputs, outputFiles)
} }

View File

@@ -69,7 +69,7 @@ func TestDroiddoc(t *testing.T) {
"bar-doc/a.java": nil, "bar-doc/a.java": nil,
"bar-doc/b.java": nil, "bar-doc/b.java": nil,
}) })
barStubsOutputs := ctx.ModuleForTests("bar-stubs", "android_common").OutputFiles(t, "") barStubsOutputs := ctx.ModuleForTests("bar-stubs", "android_common").OutputFiles(ctx, t, "")
if len(barStubsOutputs) != 1 { if len(barStubsOutputs) != 1 {
t.Errorf("Expected one output from \"bar-stubs\" got %s", barStubsOutputs) t.Errorf("Expected one output from \"bar-stubs\" got %s", barStubsOutputs)
} }

View File

@@ -2919,9 +2919,9 @@ func TestJavaLibraryOutputFilesRel(t *testing.T) {
bar := result.ModuleForTests("bar", "android_common") bar := result.ModuleForTests("bar", "android_common")
baz := result.ModuleForTests("baz", "android_common") baz := result.ModuleForTests("baz", "android_common")
fooOutputPaths := foo.OutputFiles(t, "") fooOutputPaths := foo.OutputFiles(result.TestContext, t, "")
barOutputPaths := bar.OutputFiles(t, "") barOutputPaths := bar.OutputFiles(result.TestContext, t, "")
bazOutputPaths := baz.OutputFiles(t, "") bazOutputPaths := baz.OutputFiles(result.TestContext, t, "")
android.AssertPathsRelativeToTopEquals(t, "foo output path", android.AssertPathsRelativeToTopEquals(t, "foo output path",
[]string{"out/soong/.intermediates/foo/android_common/javac/foo.jar"}, fooOutputPaths) []string{"out/soong/.intermediates/foo/android_common/javac/foo.jar"}, fooOutputPaths)

View File

@@ -108,7 +108,7 @@ func TestDataLibs(t *testing.T) {
testingModule := ctx.ModuleForTests("main_test", "android_arm64_armv8-a") testingModule := ctx.ModuleForTests("main_test", "android_arm64_armv8-a")
testBinary := testingModule.Module().(*Module).compiler.(*testDecorator) testBinary := testingModule.Module().(*Module).compiler.(*testDecorator)
outputFiles := testingModule.OutputFiles(t, "") outputFiles := testingModule.OutputFiles(ctx, t, "")
if len(outputFiles) != 1 { if len(outputFiles) != 1 {
t.Fatalf("expected exactly one output file. output files: [%s]", outputFiles) t.Fatalf("expected exactly one output file. output files: [%s]", outputFiles)
} }
@@ -168,7 +168,7 @@ func TestDataLibsRelativeInstallPath(t *testing.T) {
testingModule := ctx.ModuleForTests("main_test", "android_arm64_armv8-a") testingModule := ctx.ModuleForTests("main_test", "android_arm64_armv8-a")
module := testingModule.Module() module := testingModule.Module()
testBinary := module.(*Module).compiler.(*testDecorator) testBinary := module.(*Module).compiler.(*testDecorator)
outputFiles := testingModule.OutputFiles(t, "") outputFiles := testingModule.OutputFiles(ctx, t, "")
if len(outputFiles) != 1 { if len(outputFiles) != 1 {
t.Fatalf("expected exactly one output file. output files: [%s]", outputFiles) t.Fatalf("expected exactly one output file. output files: [%s]", outputFiles)
} }