Merge "Fix module rename inside namespace"
am: a42770b18a
Change-Id: I0bc5131c4356af86cb5c0928efc1908f72dd54e4
This commit is contained in:
commit
9684d4184d
2 changed files with 37 additions and 18 deletions
|
@ -255,22 +255,7 @@ func (r *NameResolver) ModuleFromName(name string, namespace blueprint.Namespace
|
|||
}
|
||||
|
||||
func (r *NameResolver) Rename(oldName string, newName string, namespace blueprint.Namespace) []error {
|
||||
oldNs := r.findNamespace(oldName)
|
||||
newNs := r.findNamespace(newName)
|
||||
if oldNs != newNs {
|
||||
return []error{fmt.Errorf("cannot rename %v to %v because the destination is outside namespace %v", oldName, newName, oldNs.Path)}
|
||||
}
|
||||
|
||||
oldName, err := filepath.Rel(oldNs.Path, oldName)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
newName, err = filepath.Rel(newNs.Path, newName)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return oldNs.moduleContainer.Rename(oldName, newName, nil)
|
||||
return namespace.(*Namespace).moduleContainer.Rename(oldName, newName, namespace)
|
||||
}
|
||||
|
||||
// resolve each element of namespace.importedNamespaceNames and put the result in namespace.visibleNamespaces
|
||||
|
|
|
@ -582,6 +582,25 @@ func TestConsistentNamespaceNames(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// so that the generated .ninja file will have consistent names
|
||||
func TestRename(t *testing.T) {
|
||||
_ = setupTest(t,
|
||||
map[string]string{
|
||||
"dir1": `
|
||||
soong_namespace {
|
||||
}
|
||||
test_module {
|
||||
name: "a",
|
||||
deps: ["c"],
|
||||
}
|
||||
test_module {
|
||||
name: "b",
|
||||
rename: "c",
|
||||
}
|
||||
`})
|
||||
// setupTest will report any errors
|
||||
}
|
||||
|
||||
// some utils to support the tests
|
||||
|
||||
func mockFiles(bps map[string]string) (files map[string][]byte) {
|
||||
|
@ -607,6 +626,9 @@ func setupTestFromFiles(bps map[string][]byte) (ctx *TestContext, errs []error)
|
|||
ctx.RegisterModuleType("test_module", ModuleFactoryAdaptor(newTestModule))
|
||||
ctx.RegisterModuleType("soong_namespace", ModuleFactoryAdaptor(NamespaceFactory))
|
||||
ctx.PreArchMutators(RegisterNamespaceMutator)
|
||||
ctx.PreDepsMutators(func(ctx RegisterMutatorsContext) {
|
||||
ctx.BottomUp("rename", renameMutator)
|
||||
})
|
||||
ctx.Register()
|
||||
|
||||
_, errs = ctx.ParseBlueprintsFiles("Android.bp")
|
||||
|
@ -672,12 +694,16 @@ func findModuleById(ctx *TestContext, id string) (module TestingModule) {
|
|||
type testModule struct {
|
||||
ModuleBase
|
||||
properties struct {
|
||||
Deps []string
|
||||
Id string
|
||||
Rename string
|
||||
Deps []string
|
||||
Id string
|
||||
}
|
||||
}
|
||||
|
||||
func (m *testModule) DepsMutator(ctx BottomUpMutatorContext) {
|
||||
if m.properties.Rename != "" {
|
||||
ctx.Rename(m.properties.Rename)
|
||||
}
|
||||
for _, d := range m.properties.Deps {
|
||||
ctx.AddDependency(ctx.Module(), nil, d)
|
||||
}
|
||||
|
@ -686,6 +712,14 @@ func (m *testModule) DepsMutator(ctx BottomUpMutatorContext) {
|
|||
func (m *testModule) GenerateAndroidBuildActions(ModuleContext) {
|
||||
}
|
||||
|
||||
func renameMutator(ctx BottomUpMutatorContext) {
|
||||
if m, ok := ctx.Module().(*testModule); ok {
|
||||
if m.properties.Rename != "" {
|
||||
ctx.Rename(m.properties.Rename)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func newTestModule() Module {
|
||||
m := &testModule{}
|
||||
m.AddProperties(&m.properties)
|
||||
|
|
Loading…
Reference in a new issue