Merge "Prevent defaults modules from expanding path property dependencies" into main

This commit is contained in:
Treehugger Robot
2024-01-30 01:01:37 +00:00
committed by Gerrit Code Review
2 changed files with 46 additions and 1 deletions

View File

@@ -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")
}

View File

@@ -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)
}