Loading android/fixture.go +11 −1 Original line number Diff line number Diff line Loading @@ -658,7 +658,7 @@ func (t *TestPathContext) AddNinjaFileDeps(deps ...string) { func createFixture(t *testing.T, buildDir string, preparers []*simpleFixturePreparer) Fixture { config := TestConfig(buildDir, nil, "", nil) ctx := NewTestContext(config) ctx := newTestContextForFixture(config) fixture := &fixture{ preparers: preparers, t: t, Loading Loading @@ -790,6 +790,16 @@ func (f *fixture) RunTest() *TestResult { } } // Create and set the Context's NameInterface. It needs to be created here as it depends on the // configuration that has been prepared for this fixture. resolver := NewNameResolver(ctx.config) // Set the NameInterface in the main Context. ctx.SetNameInterface(resolver) // Set the NameResolver in the TestContext. ctx.NameResolver = resolver ctx.Register() var ninjaDeps []string extraNinjaDeps, errs := ctx.ParseBlueprintsFiles("ignored") Loading android/namespace.go +21 −1 Original line number Diff line number Diff line Loading @@ -91,7 +91,27 @@ type NameResolver struct { namespaceExportFilter func(*Namespace) bool } func NewNameResolver(namespaceExportFilter func(*Namespace) bool) *NameResolver { // NameResolverConfig provides the subset of the Config interface needed by the // NewNameResolver function. type NameResolverConfig interface { // ExportedNamespaces is the list of namespaces that Soong must export to // make. ExportedNamespaces() []string } func NewNameResolver(config NameResolverConfig) *NameResolver { namespacePathsToExport := make(map[string]bool) for _, namespaceName := range config.ExportedNamespaces() { namespacePathsToExport[namespaceName] = true } namespacePathsToExport["."] = true // always export the root namespace namespaceExportFilter := func(namespace *Namespace) bool { return namespacePathsToExport[namespace.Path] } r := &NameResolver{ namespacesByDir: sync.Map{}, namespaceExportFilter: namespaceExportFilter, Loading android/namespace_test.go +30 −0 Original line number Diff line number Diff line Loading @@ -602,6 +602,36 @@ func TestRename(t *testing.T) { // RunTest will report any errors } func TestNamespace_Exports(t *testing.T) { result := GroupFixturePreparers( prepareForTestWithNamespace, FixtureModifyProductVariables(func(variables FixtureProductVariables) { variables.NamespacesToExport = []string{"dir1"} }), dirBpToPreparer(map[string]string{ "dir1": ` soong_namespace { } test_module { name: "a", } `, "dir2": ` soong_namespace { } test_module { name: "b", } `, }), ).RunTest(t) aModule := result.Module("a", "") AssertBoolEquals(t, "a exported", true, aModule.ExportedToMake()) bModule := result.Module("b", "") AssertBoolEquals(t, "b not exported", false, bModule.ExportedToMake()) } // some utils to support the tests var prepareForTestWithNamespace = GroupFixturePreparers( Loading android/testing.go +12 −10 Original line number Diff line number Diff line Loading @@ -30,19 +30,11 @@ import ( "github.com/google/blueprint/proptools" ) func NewTestContext(config Config) *TestContext { namespaceExportFilter := func(namespace *Namespace) bool { return true } nameResolver := NewNameResolver(namespaceExportFilter) func newTestContextForFixture(config Config) *TestContext { ctx := &TestContext{ Context: &Context{blueprint.NewContext(), config}, NameResolver: nameResolver, } ctx.SetNameInterface(nameResolver) ctx.postDeps = append(ctx.postDeps, registerPathDepsMutator) ctx.SetFs(ctx.config.fs) Loading @@ -53,6 +45,16 @@ func NewTestContext(config Config) *TestContext { return ctx } func NewTestContext(config Config) *TestContext { ctx := newTestContextForFixture(config) nameResolver := NewNameResolver(config) ctx.NameResolver = nameResolver ctx.SetNameInterface(nameResolver) return ctx } var PrepareForTestWithArchMutator = GroupFixturePreparers( // Configure architecture targets in the fixture config. FixtureModifyConfig(modifyTestConfigToSupportArchMutator), Loading cmd/soong_build/main.go +1 −13 Original line number Diff line number Diff line Loading @@ -106,19 +106,7 @@ func init() { } func newNameResolver(config android.Config) *android.NameResolver { namespacePathsToExport := make(map[string]bool) for _, namespaceName := range config.ExportedNamespaces() { namespacePathsToExport[namespaceName] = true } namespacePathsToExport["."] = true // always export the root namespace exportFilter := func(namespace *android.Namespace) bool { return namespacePathsToExport[namespace.Path] } return android.NewNameResolver(exportFilter) return android.NewNameResolver(config) } func newContext(configuration android.Config) *android.Context { Loading Loading
android/fixture.go +11 −1 Original line number Diff line number Diff line Loading @@ -658,7 +658,7 @@ func (t *TestPathContext) AddNinjaFileDeps(deps ...string) { func createFixture(t *testing.T, buildDir string, preparers []*simpleFixturePreparer) Fixture { config := TestConfig(buildDir, nil, "", nil) ctx := NewTestContext(config) ctx := newTestContextForFixture(config) fixture := &fixture{ preparers: preparers, t: t, Loading Loading @@ -790,6 +790,16 @@ func (f *fixture) RunTest() *TestResult { } } // Create and set the Context's NameInterface. It needs to be created here as it depends on the // configuration that has been prepared for this fixture. resolver := NewNameResolver(ctx.config) // Set the NameInterface in the main Context. ctx.SetNameInterface(resolver) // Set the NameResolver in the TestContext. ctx.NameResolver = resolver ctx.Register() var ninjaDeps []string extraNinjaDeps, errs := ctx.ParseBlueprintsFiles("ignored") Loading
android/namespace.go +21 −1 Original line number Diff line number Diff line Loading @@ -91,7 +91,27 @@ type NameResolver struct { namespaceExportFilter func(*Namespace) bool } func NewNameResolver(namespaceExportFilter func(*Namespace) bool) *NameResolver { // NameResolverConfig provides the subset of the Config interface needed by the // NewNameResolver function. type NameResolverConfig interface { // ExportedNamespaces is the list of namespaces that Soong must export to // make. ExportedNamespaces() []string } func NewNameResolver(config NameResolverConfig) *NameResolver { namespacePathsToExport := make(map[string]bool) for _, namespaceName := range config.ExportedNamespaces() { namespacePathsToExport[namespaceName] = true } namespacePathsToExport["."] = true // always export the root namespace namespaceExportFilter := func(namespace *Namespace) bool { return namespacePathsToExport[namespace.Path] } r := &NameResolver{ namespacesByDir: sync.Map{}, namespaceExportFilter: namespaceExportFilter, Loading
android/namespace_test.go +30 −0 Original line number Diff line number Diff line Loading @@ -602,6 +602,36 @@ func TestRename(t *testing.T) { // RunTest will report any errors } func TestNamespace_Exports(t *testing.T) { result := GroupFixturePreparers( prepareForTestWithNamespace, FixtureModifyProductVariables(func(variables FixtureProductVariables) { variables.NamespacesToExport = []string{"dir1"} }), dirBpToPreparer(map[string]string{ "dir1": ` soong_namespace { } test_module { name: "a", } `, "dir2": ` soong_namespace { } test_module { name: "b", } `, }), ).RunTest(t) aModule := result.Module("a", "") AssertBoolEquals(t, "a exported", true, aModule.ExportedToMake()) bModule := result.Module("b", "") AssertBoolEquals(t, "b not exported", false, bModule.ExportedToMake()) } // some utils to support the tests var prepareForTestWithNamespace = GroupFixturePreparers( Loading
android/testing.go +12 −10 Original line number Diff line number Diff line Loading @@ -30,19 +30,11 @@ import ( "github.com/google/blueprint/proptools" ) func NewTestContext(config Config) *TestContext { namespaceExportFilter := func(namespace *Namespace) bool { return true } nameResolver := NewNameResolver(namespaceExportFilter) func newTestContextForFixture(config Config) *TestContext { ctx := &TestContext{ Context: &Context{blueprint.NewContext(), config}, NameResolver: nameResolver, } ctx.SetNameInterface(nameResolver) ctx.postDeps = append(ctx.postDeps, registerPathDepsMutator) ctx.SetFs(ctx.config.fs) Loading @@ -53,6 +45,16 @@ func NewTestContext(config Config) *TestContext { return ctx } func NewTestContext(config Config) *TestContext { ctx := newTestContextForFixture(config) nameResolver := NewNameResolver(config) ctx.NameResolver = nameResolver ctx.SetNameInterface(nameResolver) return ctx } var PrepareForTestWithArchMutator = GroupFixturePreparers( // Configure architecture targets in the fixture config. FixtureModifyConfig(modifyTestConfigToSupportArchMutator), Loading
cmd/soong_build/main.go +1 −13 Original line number Diff line number Diff line Loading @@ -106,19 +106,7 @@ func init() { } func newNameResolver(config android.Config) *android.NameResolver { namespacePathsToExport := make(map[string]bool) for _, namespaceName := range config.ExportedNamespaces() { namespacePathsToExport[namespaceName] = true } namespacePathsToExport["."] = true // always export the root namespace exportFilter := func(namespace *android.Namespace) bool { return namespacePathsToExport[namespace.Path] } return android.NewNameResolver(exportFilter) return android.NewNameResolver(config) } func newContext(configuration android.Config) *android.Context { Loading