diff options
author | 2019-07-01 15:32:45 -0700 | |
---|---|---|
committer | 2019-07-03 15:37:11 -0700 | |
commit | 9a36223d59ed5811112cd2b3771a1b2928fe354d (patch) | |
tree | 80205b98dd947e44365a0c14d198244ef1fabba9 /android/mutator_test.go | |
parent | cb55e089f0d4cc79ae7cfc9cfd0e488b95073804 (diff) |
Add a String() method to android.Module
Add a String() method to android.Module for use in debugging. Store
the name and variations of the module as they are mutated.
Test: TestModuleString
Bug: 136473661
Change-Id: I74e393703dcfc96ed4e21ac4a4419a7858b59216
Diffstat (limited to 'android/mutator_test.go')
-rw-r--r-- | android/mutator_test.go | 112 |
1 files changed, 110 insertions, 2 deletions
diff --git a/android/mutator_test.go b/android/mutator_test.go index 76bb5c8c2..0b23434af 100644 --- a/android/mutator_test.go +++ b/android/mutator_test.go @@ -24,6 +24,8 @@ import ( type mutatorTestModule struct { ModuleBase props struct { + Deps_missing_deps []string + Mutator_missing_deps []string } missingDeps []string @@ -46,11 +48,11 @@ func (m *mutatorTestModule) GenerateAndroidBuildActions(ctx ModuleContext) { } func (m *mutatorTestModule) DepsMutator(ctx BottomUpMutatorContext) { - ctx.AddDependency(ctx.Module(), nil, "regular_missing_dep") + ctx.AddDependency(ctx.Module(), nil, m.props.Deps_missing_deps...) } func addMissingDependenciesMutator(ctx TopDownMutatorContext) { - ctx.AddMissingDependencies([]string{"added_missing_dep"}) + ctx.AddMissingDependencies(ctx.Module().(*mutatorTestModule).props.Mutator_missing_deps) } func TestMutatorAddMissingDependencies(t *testing.T) { @@ -68,6 +70,8 @@ func TestMutatorAddMissingDependencies(t *testing.T) { bp := ` test { name: "foo", + deps_missing_deps: ["regular_missing_dep"], + mutator_missing_deps: ["added_missing_dep"], } ` @@ -89,3 +93,107 @@ func TestMutatorAddMissingDependencies(t *testing.T) { t.Errorf("want foo missing deps %q, got %q", w, g) } } + +func TestModuleString(t *testing.T) { + ctx := NewTestContext() + + var moduleStrings []string + + ctx.PreArchMutators(func(ctx RegisterMutatorsContext) { + ctx.BottomUp("pre_arch", func(ctx BottomUpMutatorContext) { + moduleStrings = append(moduleStrings, ctx.Module().String()) + ctx.CreateVariations("a", "b") + }) + ctx.TopDown("rename_top_down", func(ctx TopDownMutatorContext) { + moduleStrings = append(moduleStrings, ctx.Module().String()) + ctx.Rename(ctx.Module().base().Name() + "_renamed1") + }) + }) + + ctx.PreDepsMutators(func(ctx RegisterMutatorsContext) { + ctx.BottomUp("pre_deps", func(ctx BottomUpMutatorContext) { + moduleStrings = append(moduleStrings, ctx.Module().String()) + ctx.CreateVariations("c", "d") + }) + }) + + ctx.PostDepsMutators(func(ctx RegisterMutatorsContext) { + ctx.BottomUp("post_deps", func(ctx BottomUpMutatorContext) { + moduleStrings = append(moduleStrings, ctx.Module().String()) + ctx.CreateLocalVariations("e", "f") + }) + ctx.BottomUp("rename_bottom_up", func(ctx BottomUpMutatorContext) { + moduleStrings = append(moduleStrings, ctx.Module().String()) + ctx.Rename(ctx.Module().base().Name() + "_renamed2") + }) + ctx.BottomUp("final", func(ctx BottomUpMutatorContext) { + moduleStrings = append(moduleStrings, ctx.Module().String()) + }) + }) + + ctx.RegisterModuleType("test", ModuleFactoryAdaptor(mutatorTestModuleFactory)) + + bp := ` + test { + name: "foo", + } + ` + + mockFS := map[string][]byte{ + "Android.bp": []byte(bp), + } + + ctx.MockFileSystem(mockFS) + + ctx.Register() + + config := TestConfig(buildDir, nil) + + _, errs := ctx.ParseFileList(".", []string{"Android.bp"}) + FailIfErrored(t, errs) + _, errs = ctx.PrepareBuildActions(config) + FailIfErrored(t, errs) + + want := []string{ + // Initial name. + "foo{}", + + // After pre_arch (reversed because rename_top_down is TopDown so it visits in reverse order). + "foo{pre_arch:b}", + "foo{pre_arch:a}", + + // After rename_top_down. + "foo_renamed1{pre_arch:a}", + "foo_renamed1{pre_arch:b}", + + // After pre_deps. + "foo_renamed1{pre_arch:a,pre_deps:c}", + "foo_renamed1{pre_arch:a,pre_deps:d}", + "foo_renamed1{pre_arch:b,pre_deps:c}", + "foo_renamed1{pre_arch:b,pre_deps:d}", + + // After post_deps. + "foo_renamed1{pre_arch:a,pre_deps:c,post_deps:e}", + "foo_renamed1{pre_arch:a,pre_deps:c,post_deps:f}", + "foo_renamed1{pre_arch:a,pre_deps:d,post_deps:e}", + "foo_renamed1{pre_arch:a,pre_deps:d,post_deps:f}", + "foo_renamed1{pre_arch:b,pre_deps:c,post_deps:e}", + "foo_renamed1{pre_arch:b,pre_deps:c,post_deps:f}", + "foo_renamed1{pre_arch:b,pre_deps:d,post_deps:e}", + "foo_renamed1{pre_arch:b,pre_deps:d,post_deps:f}", + + // After rename_bottom_up. + "foo_renamed2{pre_arch:a,pre_deps:c,post_deps:e}", + "foo_renamed2{pre_arch:a,pre_deps:c,post_deps:f}", + "foo_renamed2{pre_arch:a,pre_deps:d,post_deps:e}", + "foo_renamed2{pre_arch:a,pre_deps:d,post_deps:f}", + "foo_renamed2{pre_arch:b,pre_deps:c,post_deps:e}", + "foo_renamed2{pre_arch:b,pre_deps:c,post_deps:f}", + "foo_renamed2{pre_arch:b,pre_deps:d,post_deps:e}", + "foo_renamed2{pre_arch:b,pre_deps:d,post_deps:f}", + } + + if !reflect.DeepEqual(moduleStrings, want) { + t.Errorf("want module String() values:\n%q\ngot:\n%q", want, moduleStrings) + } +} |