|  | 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) | 
|  | }) | 
|  | } | 
|  | } |