Merge "Make TestingBuildParams.RelativeToTop() modify (Writable)Path(s)"

This commit is contained in:
Paul Duffin 2021-03-28 22:00:05 +00:00 committed by Gerrit Code Review
commit cf7f2e0a9e

View file

@ -539,8 +539,7 @@ type TestingBuildParams struct {
// 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 @@ func (p TestingBuildParams) RelativeToTop() TestingBuildParams {
// 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 (p TestingBuildParams) RelativeToTop() TestingBuildParams {
}
}
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