Stop PathForModuleSrc from validating the paths unnecessarily

PathForModuleSrc calls validatePath in order to convert the supplied
path components into a single path. Unfortunately, that corrupts a
fully qualified module name. So, when given "//namespace:module" it
treats it as a path and replaces "//" with "/". That replacement is
done by a call to filepath.Join().

This change simply concatenates the path components together textually,
using the path separator, to avoid the corruption. That ensures that
a fully qualified module name is preserved and processed properly. If
the path components do not contain a module name then expandOneSrcPath
will call pathForModuleSrc which validates the path so it does not open
up a way to create an invalid path as the validation was unnecessary
anyway.

Bug: 193228441
Test: m nothing
Change-Id: I0bb66feac182b77ce96c8d5d5f17e28ea28d75ba
This commit is contained in:
Paul Duffin
2021-07-09 16:56:35 +01:00
parent ec0bd8cd9f
commit 407501b82c
2 changed files with 6 additions and 6 deletions

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"`,
}),
},