1package android 2 3import ( 4 "testing" 5) 6 7var packageTests = []struct { 8 name string 9 fs MockFS 10 expectedErrors []string 11}{ 12 // Package default_visibility handling is tested in visibility_test.go 13 { 14 name: "package must not accept visibility and name properties", 15 fs: map[string][]byte{ 16 "top/Blueprints": []byte(` 17 package { 18 name: "package", 19 visibility: ["//visibility:private"], 20 licenses: ["license"], 21 }`), 22 }, 23 expectedErrors: []string{ 24 `top/Blueprints:5:14: unrecognized property "licenses"`, 25 `top/Blueprints:3:10: unrecognized property "name"`, 26 `top/Blueprints:4:16: unrecognized property "visibility"`, 27 }, 28 }, 29 { 30 name: "multiple packages in separate directories", 31 fs: map[string][]byte{ 32 "top/Blueprints": []byte(` 33 package { 34 }`), 35 "other/Blueprints": []byte(` 36 package { 37 }`), 38 "other/nested/Blueprints": []byte(` 39 package { 40 }`), 41 }, 42 }, 43 { 44 name: "package must not be specified more than once per package", 45 fs: map[string][]byte{ 46 "top/Blueprints": []byte(` 47 package { 48 default_visibility: ["//visibility:private"], 49 default_applicable_licenses: ["license"], 50 } 51 52 package { 53 }`), 54 }, 55 expectedErrors: []string{ 56 `module "//top" already defined`, 57 }, 58 }, 59} 60 61func TestPackage(t *testing.T) { 62 for _, test := range packageTests { 63 t.Run(test.name, func(t *testing.T) { 64 GroupFixturePreparers( 65 PrepareForTestWithArchMutator, 66 PrepareForTestWithPackageModule, 67 test.fs.AddToFixture(), 68 ). 69 ExtendWithErrorHandler(FixtureExpectsAllErrorsToMatchAPattern(test.expectedErrors)). 70 RunTest(t) 71 }) 72 } 73} 74