Merge "Prevent defaults modules from expanding path property dependencies" into main
This commit is contained in:
@@ -16,10 +16,13 @@ package android
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
)
|
||||
|
||||
type defaultsTestProperties struct {
|
||||
Foo []string
|
||||
Foo []string
|
||||
Path_prop []string `android:"path"`
|
||||
}
|
||||
|
||||
type defaultsTestModule struct {
|
||||
@@ -130,3 +133,40 @@ func TestDefaultsAllowMissingDependencies(t *testing.T) {
|
||||
// TODO: missing transitive defaults is currently not handled
|
||||
_ = missingTransitiveDefaults
|
||||
}
|
||||
|
||||
func TestDefaultsPathProperties(t *testing.T) {
|
||||
bp := `
|
||||
defaults {
|
||||
name: "defaults",
|
||||
path_prop: [":gen"],
|
||||
}
|
||||
|
||||
test {
|
||||
name: "foo",
|
||||
defaults: ["defaults"],
|
||||
}
|
||||
|
||||
test {
|
||||
name: "gen",
|
||||
}
|
||||
`
|
||||
|
||||
result := GroupFixturePreparers(
|
||||
prepareForDefaultsTest,
|
||||
FixtureWithRootAndroidBp(bp),
|
||||
).RunTest(t)
|
||||
|
||||
collectDeps := func(m Module) []string {
|
||||
var deps []string
|
||||
result.VisitDirectDeps(m, func(dep blueprint.Module) {
|
||||
deps = append(deps, result.ModuleName(dep))
|
||||
})
|
||||
return deps
|
||||
}
|
||||
|
||||
foo := result.Module("foo", "")
|
||||
defaults := result.Module("defaults", "")
|
||||
|
||||
AssertStringListContains(t, "foo should depend on gen", collectDeps(foo), "gen")
|
||||
AssertStringListDoesNotContain(t, "defaults should not depend on gen", collectDeps(defaults), "gen")
|
||||
}
|
||||
|
@@ -33,6 +33,11 @@ func registerPathDepsMutator(ctx RegisterMutatorsContext) {
|
||||
// The pathDepsMutator automatically adds dependencies on any module that is listed with the
|
||||
// ":module" module reference syntax in a property that is tagged with `android:"path"`.
|
||||
func pathDepsMutator(ctx BottomUpMutatorContext) {
|
||||
if _, ok := ctx.Module().(DefaultsModule); ok {
|
||||
// Defaults modules shouldn't have dependencies added for path properties, they have already been
|
||||
// squashed into the real modules.
|
||||
return
|
||||
}
|
||||
props := ctx.Module().base().GetProperties()
|
||||
addPathDepsForProps(ctx, props)
|
||||
}
|
||||
|
Reference in New Issue
Block a user