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