xref: /aosp_15_r20/build/bazel/mkcompare/mkfile_test.go (revision 7594170e27e0732bc44b93d1440d87a54b6ffe7c)
1*7594170eSAndroid Build Coastguard Workerpackage mkcompare
2*7594170eSAndroid Build Coastguard Worker
3*7594170eSAndroid Build Coastguard Workerimport (
4*7594170eSAndroid Build Coastguard Worker	"github.com/google/go-cmp/cmp"
5*7594170eSAndroid Build Coastguard Worker	"strings"
6*7594170eSAndroid Build Coastguard Worker	"testing"
7*7594170eSAndroid Build Coastguard Worker)
8*7594170eSAndroid Build Coastguard Worker
9*7594170eSAndroid Build Coastguard Workerfunc TestParseMkFile(t *testing.T) {
10*7594170eSAndroid Build Coastguard Worker	tests := []struct {
11*7594170eSAndroid Build Coastguard Worker		name    string
12*7594170eSAndroid Build Coastguard Worker		source  string
13*7594170eSAndroid Build Coastguard Worker		want    MkFile
14*7594170eSAndroid Build Coastguard Worker		wantErr bool
15*7594170eSAndroid Build Coastguard Worker	}{
16*7594170eSAndroid Build Coastguard Worker		{
17*7594170eSAndroid Build Coastguard Worker			name: "Good1",
18*7594170eSAndroid Build Coastguard Worker			source: `
19*7594170eSAndroid Build Coastguard Workerinclude $(CLEAR_VARS) # modType
20*7594170eSAndroid Build Coastguard WorkerLOCAL_MODULE := mymod
21*7594170eSAndroid Build Coastguard WorkerLOCAL_MODULE_CLASS := ETC
22*7594170eSAndroid Build Coastguard Workerinclude $(BUILD_PREBUILT)
23*7594170eSAndroid Build Coastguard Worker
24*7594170eSAndroid Build Coastguard Workerignored
25*7594170eSAndroid Build Coastguard Workerignored2
26*7594170eSAndroid Build Coastguard Worker
27*7594170eSAndroid Build Coastguard Workerinclude $(CLEAR_VARS)
28*7594170eSAndroid Build Coastguard WorkerLOCAL_MODULE := mymod2
29*7594170eSAndroid Build Coastguard WorkerLOCAL_MODULE_CLASS := BIN
30*7594170eSAndroid Build Coastguard WorkerMY_PATH := foo
31*7594170eSAndroid Build Coastguard Workerinclude $(BUILD_PREBUILT)
32*7594170eSAndroid Build Coastguard Worker`,
33*7594170eSAndroid Build Coastguard Worker			want: MkFile{
34*7594170eSAndroid Build Coastguard Worker				Modules: map[string]*MkModule{
35*7594170eSAndroid Build Coastguard Worker					"mymod|class:ETC|target_arch:*": {
36*7594170eSAndroid Build Coastguard Worker						Type:      "modType",
37*7594170eSAndroid Build Coastguard Worker						Location:  2,
38*7594170eSAndroid Build Coastguard Worker						Variables: map[string]string{"LOCAL_MODULE": "mymod", "LOCAL_MODULE_CLASS": "ETC"},
39*7594170eSAndroid Build Coastguard Worker					},
40*7594170eSAndroid Build Coastguard Worker					"mymod2|class:BIN|target_arch:*": {
41*7594170eSAndroid Build Coastguard Worker						Type:      "$(BUILD_PREBUILT)",
42*7594170eSAndroid Build Coastguard Worker						Location:  10,
43*7594170eSAndroid Build Coastguard Worker						Variables: map[string]string{"LOCAL_MODULE": "mymod2", "LOCAL_MODULE_CLASS": "BIN", "MY_PATH": "foo"},
44*7594170eSAndroid Build Coastguard Worker					},
45*7594170eSAndroid Build Coastguard Worker				},
46*7594170eSAndroid Build Coastguard Worker			},
47*7594170eSAndroid Build Coastguard Worker		},
48*7594170eSAndroid Build Coastguard Worker	}
49*7594170eSAndroid Build Coastguard Worker	for _, tt := range tests {
50*7594170eSAndroid Build Coastguard Worker		t.Run(tt.name, func(t *testing.T) {
51*7594170eSAndroid Build Coastguard Worker			got, err := ParseMkFile(strings.NewReader(tt.source))
52*7594170eSAndroid Build Coastguard Worker			if (err != nil) != tt.wantErr {
53*7594170eSAndroid Build Coastguard Worker				t.Errorf("ParseMkFile() error = %v, wantErr %v", err, tt.wantErr)
54*7594170eSAndroid Build Coastguard Worker				return
55*7594170eSAndroid Build Coastguard Worker			}
56*7594170eSAndroid Build Coastguard Worker			if !cmp.Equal(got.Modules, tt.want.Modules) {
57*7594170eSAndroid Build Coastguard Worker				t.Errorf("ParseMkFile() got = %v, want %v, \ndiff: %s", got.Modules, tt.want.Modules,
58*7594170eSAndroid Build Coastguard Worker					cmp.Diff(got, tt.want))
59*7594170eSAndroid Build Coastguard Worker			}
60*7594170eSAndroid Build Coastguard Worker		})
61*7594170eSAndroid Build Coastguard Worker	}
62*7594170eSAndroid Build Coastguard Worker}
63