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