package android import ( "testing" ) var packageTests = []struct { name string fs MockFS expectedErrors []string }{ // Package default_visibility handling is tested in visibility_test.go { name: "package must not accept visibility, name or licenses properties", fs: map[string][]byte{ "top/Android.bp": []byte(` package { name: "package", visibility: ["//visibility:private"], licenses: ["license"], }`), }, expectedErrors: []string{ `top/Android.bp:5:14: unrecognized property "licenses"`, `top/Android.bp:3:10: unrecognized property "name"`, `top/Android.bp:4:16: unrecognized property "visibility"`, }, }, { name: "multiple packages in separate directories", fs: map[string][]byte{ "top/Android.bp": []byte(` package { }`), "other/Android.bp": []byte(` package { }`), "other/nested/Android.bp": []byte(` package { }`), }, }, { name: "package must not be specified more than once per package", fs: map[string][]byte{ "top/Android.bp": []byte(` package { default_visibility: ["//visibility:private"], default_applicable_licenses: ["license"], } package { }`), }, expectedErrors: []string{ `module "//top" already defined`, }, }, } func TestPackage(t *testing.T) { for _, test := range packageTests { t.Run(test.name, func(t *testing.T) { GroupFixturePreparers( PrepareForTestWithArchMutator, PrepareForTestWithPackageModule, test.fs.AddToFixture(), ). ExtendWithErrorHandler(FixtureExpectsAllErrorsToMatchAPattern(test.expectedErrors)). RunTest(t) }) } }