Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2d08b2ab authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

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

parents 59739666 69a680fe
Loading
Loading
Loading
Loading
+41 −1
Original line number Diff line number Diff line
@@ -16,10 +16,13 @@ package android

import (
	"testing"

	"github.com/google/blueprint"
)

type defaultsTestProperties struct {
	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")
}
+5 −0
Original line number Diff line number Diff line
@@ -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)
}