xref: /aosp_15_r20/build/make/tools/canoninja/canoninja_test.go (revision 9e94795a3d4ef5c1d47486f9a02bb378756cea8a)
1package canoninja
2
3import (
4	"bytes"
5	"testing"
6)
7
8func TestGenerate(t *testing.T) {
9	tests := []struct {
10		name     string
11		in       []byte
12		wantSink string
13		wantErr  bool
14	}{
15		{
16			name: "1",
17			in: []byte(`
18rule rule1
19  abcd
20rule rule2
21  abcd
22build x: rule1
23`),
24			wantSink: `
25rule R9c97aba7f61994be6862f5ea9a62d26130c7f48b
26  abcd
27rule R9c97aba7f61994be6862f5ea9a62d26130c7f48b
28  abcd
29build x: R9c97aba7f61994be6862f5ea9a62d26130c7f48b
30`,
31			wantErr: false,
32		},
33	}
34	for _, tt := range tests {
35		t.Run(tt.name, func(t *testing.T) {
36			sink := &bytes.Buffer{}
37			err := Generate("<file>", tt.in, sink)
38			if (err != nil) != tt.wantErr {
39				t.Errorf("Generate() error = %v, wantErr %v", err, tt.wantErr)
40				return
41			}
42			if gotSink := sink.String(); gotSink != tt.wantSink {
43				t.Errorf("Generate() gotSink = %v, want %v", gotSink, tt.wantSink)
44			}
45		})
46	}
47}
48