| package android |
| |
| import ( |
| "testing" |
| |
| "github.com/google/blueprint" |
| ) |
| |
| var genNoticeTests = []struct { |
| name string |
| fs MockFS |
| expectedErrors []string |
| }{ |
| { |
| name: "gen_notice must not accept licenses property", |
| fs: map[string][]byte{ |
| "top/Android.bp": []byte(` |
| gen_notice { |
| name: "top_license", |
| licenses: ["other_license"], |
| }`), |
| }, |
| expectedErrors: []string{ |
| `not supported on "gen_notice" modules`, |
| }, |
| }, |
| { |
| name: "bad gen_notice", |
| fs: map[string][]byte{ |
| "top/Android.bp": []byte(` |
| gen_notice { |
| name: "top_notice", |
| for: ["top_rule"], |
| }`), |
| "other/Android.bp": []byte(` |
| mock_genrule { |
| name: "other_rule", |
| dep: ["top_notice"], |
| }`), |
| }, |
| expectedErrors: []string{ |
| `module "top_notice": for: no "top_rule" module exists`, |
| }, |
| }, |
| { |
| name: "doubly bad gen_notice", |
| fs: map[string][]byte{ |
| "top/Android.bp": []byte(` |
| gen_notice { |
| name: "top_notice", |
| for: ["top_rule", "other_rule"], |
| }`), |
| }, |
| expectedErrors: []string{ |
| `module "top_notice": for: modules "top_rule", "other_rule" do not exist`, |
| }, |
| }, |
| { |
| name: "good gen_notice", |
| fs: map[string][]byte{ |
| "top/Android.bp": []byte(` |
| gen_notice { |
| name: "top_notice", |
| for: ["top_rule"], |
| } |
| |
| mock_genrule { |
| name: "top_rule", |
| dep: ["top_notice"], |
| }`), |
| "other/Android.bp": []byte(` |
| mock_genrule { |
| name: "other_rule", |
| dep: ["top_notice"], |
| }`), |
| }, |
| }, |
| { |
| name: "multiple license kinds", |
| fs: map[string][]byte{ |
| "top/Android.bp": []byte(` |
| gen_notice { |
| name: "top_notice", |
| for: ["top_rule"], |
| } |
| |
| gen_notice { |
| name: "top_html_notice", |
| html: true, |
| for: ["top_rule"], |
| } |
| |
| gen_notice { |
| name: "top_xml_notice", |
| xml: true, |
| for: ["top_notice"], |
| } |
| |
| mock_genrule { |
| name: "top_rule", |
| dep: [ |
| "top_notice", |
| "top_html_notice", |
| "top_xml_notice", |
| ], |
| }`), |
| "other/Android.bp": []byte(` |
| mock_genrule { |
| name: "other_rule", |
| dep: ["top_xml_notice"], |
| }`), |
| }, |
| }, |
| } |
| |
| func TestGenNotice(t *testing.T) { |
| for _, test := range genNoticeTests { |
| t.Run(test.name, func(t *testing.T) { |
| GroupFixturePreparers( |
| PrepareForTestWithGenNotice, |
| FixtureRegisterWithContext(func(ctx RegistrationContext) { |
| ctx.RegisterModuleType("mock_genrule", newMockGenruleModule) |
| }), |
| test.fs.AddToFixture(), |
| ). |
| ExtendWithErrorHandler(FixtureExpectsAllErrorsToMatchAPattern(test.expectedErrors)). |
| RunTest(t) |
| }) |
| } |
| } |
| |
| type mockGenruleProperties struct { |
| Dep []string |
| } |
| |
| type mockGenruleModule struct { |
| ModuleBase |
| DefaultableModuleBase |
| |
| properties mockGenruleProperties |
| } |
| |
| func newMockGenruleModule() Module { |
| m := &mockGenruleModule{} |
| m.AddProperties(&m.properties) |
| InitAndroidArchModule(m, HostAndDeviceSupported, MultilibCommon) |
| InitDefaultableModule(m) |
| return m |
| } |
| |
| type genruleDepTag struct { |
| blueprint.BaseDependencyTag |
| } |
| |
| func (j *mockGenruleModule) DepsMutator(ctx BottomUpMutatorContext) { |
| m, ok := ctx.Module().(Module) |
| if !ok { |
| return |
| } |
| ctx.AddDependency(m, genruleDepTag{}, j.properties.Dep...) |
| } |
| |
| func (p *mockGenruleModule) GenerateAndroidBuildActions(ModuleContext) { |
| } |