Make TestingBuildParams.RelativeToTop() modify (Writable)Path(s)
Bug: 183650682
Test: m droid
Change-Id: I5cb150aa28cf1a06c353b67443fd2128aff4bb5d
diff --git a/android/testing.go b/android/testing.go
index 3f3f769..27573d5 100644
--- a/android/testing.go
+++ b/android/testing.go
@@ -539,8 +539,7 @@
// The parts of this structure which are changed are:
// * BuildParams
// * Args
-// * Path instances are intentionally not modified, use AssertPathRelativeToTopEquals or
-// AssertPathsRelativeToTopEquals instead which do something similar.
+// * All Path, Paths, WritablePath and WritablePaths fields.
//
// * RuleParams
// * Command
@@ -564,6 +563,20 @@
// Take a copy of the build params and replace any args that contains test specific temporary
// paths with paths relative to the top.
bparams := p.BuildParams
+ bparams.Depfile = normalizeWritablePathRelativeToTop(bparams.Depfile)
+ bparams.Output = normalizeWritablePathRelativeToTop(bparams.Output)
+ bparams.Outputs = bparams.Outputs.RelativeToTop()
+ bparams.SymlinkOutput = normalizeWritablePathRelativeToTop(bparams.SymlinkOutput)
+ bparams.SymlinkOutputs = bparams.SymlinkOutputs.RelativeToTop()
+ bparams.ImplicitOutput = normalizeWritablePathRelativeToTop(bparams.ImplicitOutput)
+ bparams.ImplicitOutputs = bparams.ImplicitOutputs.RelativeToTop()
+ bparams.Input = normalizePathRelativeToTop(bparams.Input)
+ bparams.Inputs = bparams.Inputs.RelativeToTop()
+ bparams.Implicit = normalizePathRelativeToTop(bparams.Implicit)
+ bparams.Implicits = bparams.Implicits.RelativeToTop()
+ bparams.OrderOnly = bparams.OrderOnly.RelativeToTop()
+ bparams.Validation = normalizePathRelativeToTop(bparams.Validation)
+ bparams.Validations = bparams.Validations.RelativeToTop()
bparams.Args = normalizeStringMapRelativeToTop(p.config, bparams.Args)
// Ditto for any fields in the RuleParams.
@@ -582,6 +595,20 @@
}
}
+func normalizeWritablePathRelativeToTop(path WritablePath) WritablePath {
+ if path == nil {
+ return nil
+ }
+ return path.RelativeToTop().(WritablePath)
+}
+
+func normalizePathRelativeToTop(path Path) Path {
+ if path == nil {
+ return nil
+ }
+ return path.RelativeToTop()
+}
+
// baseTestingComponent provides functionality common to both TestingModule and TestingSingleton.
type baseTestingComponent struct {
config Config