• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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