diff --git a/android/testing.go b/android/testing.go index acec6fc01..f4f5c98e2 100644 --- a/android/testing.go +++ b/android/testing.go @@ -558,7 +558,7 @@ func (p TestingBuildParams) RelativeToTop() TestingBuildParams { return p } if p.config.config == nil { - panic("cannot call RelativeToTop() on a TestingBuildParams previously returned by RelativeToTop()") + return p } // Take a copy of the build params and replace any args that contains test specific temporary // paths with paths relative to the top. @@ -670,7 +670,7 @@ func (b baseTestingComponent) newTestingBuildParams(bparams BuildParams) Testing config: b.config, BuildParams: bparams, RuleParams: b.provider.RuleParamsForTests()[bparams.Rule], - } + }.RelativeToTop() } func (b baseTestingComponent) maybeBuildParamsFromRule(rule string) (TestingBuildParams, []string) { diff --git a/apex/apex_test.go b/apex/apex_test.go index 5476fe845..11b23c6bf 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -5066,7 +5066,7 @@ func TestApexWithApps(t *testing.T) { } // JNI libraries including transitive deps are for _, jni := range []string{"libjni", "libfoo"} { - jniOutput := ctx.ModuleForTests(jni, "android_arm64_armv8-a_sdk_shared_apex10000").Module().(*cc.Module).OutputFile() + jniOutput := ctx.ModuleForTests(jni, "android_arm64_armv8-a_sdk_shared_apex10000").Module().(*cc.Module).OutputFile().RelativeToPath() // ... embedded inside APK (jnilibs.zip) ensureListContains(t, appZipRule.Implicits.Strings(), jniOutput.String()) // ... and not directly inside the APEX diff --git a/cc/cc_test.go b/cc/cc_test.go index f1efbff0e..205c71fa8 100644 --- a/cc/cc_test.go +++ b/cc/cc_test.go @@ -301,13 +301,9 @@ func checkVndkModule(t *testing.T, ctx *android.TestContext, name, subDir string func checkSnapshotIncludeExclude(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, moduleName, snapshotFilename, subDir, variant string, include bool, fake bool) { t.Helper() - mod, ok := ctx.ModuleForTests(moduleName, variant).Module().(android.OutputFileProducer) - if !ok { - t.Errorf("%q must have output\n", moduleName) - return - } - outputFiles, err := mod.OutputFiles("") - if err != nil || len(outputFiles) != 1 { + mod := ctx.ModuleForTests(moduleName, variant) + outputFiles := mod.OutputFiles(t, "") + if len(outputFiles) != 1 { t.Errorf("%q must have single output\n", moduleName) return } @@ -333,14 +329,17 @@ func checkSnapshotIncludeExclude(t *testing.T, ctx *android.TestContext, singlet } func checkSnapshot(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, moduleName, snapshotFilename, subDir, variant string) { + t.Helper() checkSnapshotIncludeExclude(t, ctx, singleton, moduleName, snapshotFilename, subDir, variant, true, false) } func checkSnapshotExclude(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, moduleName, snapshotFilename, subDir, variant string) { + t.Helper() checkSnapshotIncludeExclude(t, ctx, singleton, moduleName, snapshotFilename, subDir, variant, false, false) } func checkSnapshotRule(t *testing.T, ctx *android.TestContext, singleton android.TestingSingleton, moduleName, snapshotFilename, subDir, variant string) { + t.Helper() checkSnapshotIncludeExclude(t, ctx, singleton, moduleName, snapshotFilename, subDir, variant, true, true) } @@ -2552,7 +2551,7 @@ func parseModuleDeps(text string) (modulesInOrder []android.Path, allDeps map[an func getOutputPaths(ctx *android.TestContext, variant string, moduleNames []string) (paths android.Paths) { for _, moduleName := range moduleNames { module := ctx.ModuleForTests(moduleName, variant).Module().(*Module) - output := module.outputFile.Path() + output := module.outputFile.Path().RelativeToTop() paths = append(paths, output) } return paths @@ -2583,7 +2582,8 @@ func TestStaticLibDepReordering(t *testing.T) { variant := "android_arm64_armv8-a_static" moduleA := ctx.ModuleForTests("a", variant).Module().(*Module) - actual := ctx.ModuleProvider(moduleA, StaticLibraryInfoProvider).(StaticLibraryInfo).TransitiveStaticLibrariesForOrdering.ToList() + actual := ctx.ModuleProvider(moduleA, StaticLibraryInfoProvider).(StaticLibraryInfo). + TransitiveStaticLibrariesForOrdering.ToList().RelativeToTop() expected := getOutputPaths(ctx, variant, []string{"a", "c", "b", "d"}) if !reflect.DeepEqual(actual, expected) { @@ -2617,7 +2617,8 @@ func TestStaticLibDepReorderingWithShared(t *testing.T) { variant := "android_arm64_armv8-a_static" moduleA := ctx.ModuleForTests("a", variant).Module().(*Module) - actual := ctx.ModuleProvider(moduleA, StaticLibraryInfoProvider).(StaticLibraryInfo).TransitiveStaticLibrariesForOrdering.ToList() + actual := ctx.ModuleProvider(moduleA, StaticLibraryInfoProvider).(StaticLibraryInfo). + TransitiveStaticLibrariesForOrdering.ToList().RelativeToTop() expected := getOutputPaths(ctx, variant, []string{"a", "c", "b"}) if !reflect.DeepEqual(actual, expected) { diff --git a/cc/gen_test.go b/cc/gen_test.go index 41ef95c27..40a571619 100644 --- a/cc/gen_test.go +++ b/cc/gen_test.go @@ -36,8 +36,10 @@ func TestGen(t *testing.T) { aidl := ctx.ModuleForTests("libfoo", "android_arm_armv7-a-neon_shared").Rule("aidl") libfoo := ctx.ModuleForTests("libfoo", "android_arm_armv7-a-neon_shared").Module().(*Module) - if !inList("-I"+filepath.Dir(aidl.Output.String()), libfoo.flags.Local.CommonFlags) { - t.Errorf("missing aidl includes in global flags") + expected := "-I" + filepath.Dir(aidl.Output.String()) + actual := android.StringsRelativeToTop(ctx.Config(), libfoo.flags.Local.CommonFlags) + if !inList(expected, actual) { + t.Errorf("missing aidl includes in global flags, expected %q, actual %q", expected, actual) } }) @@ -61,7 +63,7 @@ func TestGen(t *testing.T) { aidlManifest := ctx.ModuleForTests("libfoo", "android_arm_armv7-a-neon_shared").Output("aidl.sbox.textproto") libfoo := ctx.ModuleForTests("libfoo", "android_arm_armv7-a-neon_shared").Module().(*Module) - if !inList("-I"+filepath.Dir(aidl.Output.String()), libfoo.flags.Local.CommonFlags) { + if !inList("-I"+filepath.Dir(aidl.Output.String()), android.StringsRelativeToTop(ctx.Config(), libfoo.flags.Local.CommonFlags)) { t.Errorf("missing aidl includes in global flags") } diff --git a/cc/prebuilt_test.go b/cc/prebuilt_test.go index 20274b2ba..f72371a54 100644 --- a/cc/prebuilt_test.go +++ b/cc/prebuilt_test.go @@ -15,7 +15,6 @@ package cc import ( - "path/filepath" "testing" "android/soong/android" @@ -302,8 +301,7 @@ func TestPrebuiltSymlinkedHostBinary(t *testing.T) { }) fooRule := ctx.ModuleForTests("foo", "linux_glibc_x86_64").Rule("Symlink") - assertString(t, fooRule.Output.String(), - filepath.Join(buildDir, ".intermediates/foo/linux_glibc_x86_64/foo")) + assertString(t, fooRule.Output.String(), "out/soong/.intermediates/foo/linux_glibc_x86_64/foo") assertString(t, fooRule.Args["fromPath"], "$$PWD/linux_glibc_x86_64/bin/foo") var libfooDep android.Path @@ -313,8 +311,7 @@ func TestPrebuiltSymlinkedHostBinary(t *testing.T) { break } } - assertString(t, libfooDep.String(), - filepath.Join(buildDir, ".intermediates/libfoo/linux_glibc_x86_64_shared/libfoo.so")) + assertString(t, libfooDep.String(), "out/soong/.intermediates/libfoo/linux_glibc_x86_64_shared/libfoo.so") } func TestPrebuiltLibrarySanitized(t *testing.T) { diff --git a/cc/proto_test.go b/cc/proto_test.go index f8bbd2643..3d636fb46 100644 --- a/cc/proto_test.go +++ b/cc/proto_test.go @@ -61,7 +61,7 @@ func TestProto(t *testing.T) { t.Errorf("expected %q in %q", w, cmd) } - foobarPath := foobar.Module().(android.HostToolProvider).HostToolPath().String() + foobarPath := foobar.Module().(android.HostToolProvider).HostToolPath().RelativeToPath().String() if w := "--plugin=protoc-gen-foobar=" + foobarPath; !strings.Contains(cmd, w) { t.Errorf("expected %q in %q", w, cmd) diff --git a/cc/sdk_test.go b/cc/sdk_test.go index 5a3c181dc..61925e30c 100644 --- a/cc/sdk_test.go +++ b/cc/sdk_test.go @@ -66,6 +66,7 @@ func TestSdkMutator(t *testing.T) { } else { toFile = m.outputFile.Path() } + toFile = toFile.RelativeToTop() rule := from.Description("link") for _, dep := range rule.Implicits { diff --git a/java/java_test.go b/java/java_test.go index 2ade0fed8..1d1a7967e 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -1670,7 +1670,7 @@ func TestJavaSdkLibrary_DoNotAccessImplWhenItIsNotBuilt(t *testing.T) { // The bar library should depend on the stubs jar. barLibrary := result.ModuleForTests("bar", "android_common").Rule("javac") - if expected, actual := `^-classpath .*:/[^:]*/turbine-combined/foo\.stubs\.jar$`, barLibrary.Args["classpath"]; !regexp.MustCompile(expected).MatchString(actual) { + if expected, actual := `^-classpath .*:out/soong/[^:]*/turbine-combined/foo\.stubs\.jar$`, barLibrary.Args["classpath"]; !regexp.MustCompile(expected).MatchString(actual) { t.Errorf("expected %q, found %#q", expected, actual) } } @@ -1973,7 +1973,7 @@ func TestJavaSdkLibrary_DefaultToStubs(t *testing.T) { `) // The baz library should depend on the system stubs jar. bazLibrary := result.ModuleForTests("baz", "android_common").Rule("javac") - if expected, actual := `^-classpath .*:/[^:]*/turbine-combined/foo\.stubs.system\.jar$`, bazLibrary.Args["classpath"]; !regexp.MustCompile(expected).MatchString(actual) { + if expected, actual := `^-classpath .*:out/soong/[^:]*/turbine-combined/foo\.stubs.system\.jar$`, bazLibrary.Args["classpath"]; !regexp.MustCompile(expected).MatchString(actual) { t.Errorf("expected %q, found %#q", expected, actual) } }