Merge "Stop PathForModuleSrc from validating the paths unnecessarily"

This commit is contained in:
Paul Duffin
2021-07-13 13:30:55 +00:00
committed by Gerrit Code Review
2 changed files with 6 additions and 6 deletions

View File

@@ -1268,10 +1268,11 @@ var _ resPathProvider = SourcePath{}
// PathForModuleSrc returns a Path representing the paths... under the
// module's local source directory.
func PathForModuleSrc(ctx ModuleMissingDepsPathContext, pathComponents ...string) Path {
p, err := validatePath(pathComponents...)
if err != nil {
reportPathError(ctx, err)
}
// Just join the components textually just to make sure that it does not corrupt a fully qualified
// module reference, e.g. if the pathComponents is "://other:foo" then using filepath.Join() or
// validatePath() will corrupt it, e.g. replace "//" with "/". If the path is not a module
// reference then it will be validated by expandOneSrcPath anyway when it calls expandOneSrcPath.
p := strings.Join(pathComponents, string(filepath.Separator))
paths, err := expandOneSrcPath(ctx, p, nil)
if err != nil {
if depErr, ok := err.(missingDependencyError); ok {

View File

@@ -1373,8 +1373,7 @@ func TestPathForModuleSrc(t *testing.T) {
}
`),
errorHandler: FixtureExpectsAllErrorsToMatchAPattern([]string{
// The message is broken because PathForModuleSrc corrupts the name during validation.
`"foo": missing dependencies: /other:b, is the property annotated with android:"path"`,
`"foo": missing dependencies: //other:b, is the property annotated with android:"path"`,
`"foo": missing dependency on "//other:c", is the property annotated with android:"path"`,
}),
},