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