Source file
src/cmd/dist/buildtag_test.go
1
2
3
4
5 package main
6
7 import (
8 "fmt"
9 "reflect"
10 "testing"
11 )
12
13 var buildParserTests = []struct {
14 x string
15 matched bool
16 err error
17 }{
18 {"gc", true, nil},
19 {"gccgo", false, nil},
20 {"!gc", false, nil},
21 {"gc && gccgo", false, nil},
22 {"gc || gccgo", true, nil},
23 {"gc || (gccgo && !gccgo)", true, nil},
24 {"gc && (gccgo || !gccgo)", true, nil},
25 {"!(gc && (gccgo || !gccgo))", false, nil},
26 {"gccgo || gc", true, nil},
27 {"!(!(!(gccgo || gc)))", false, nil},
28 {"compiler_bootstrap", false, nil},
29 {"cmd_go_bootstrap", true, nil},
30 {"syntax(error", false, fmt.Errorf("parsing //go:build line: unexpected (")},
31 {"(gc", false, fmt.Errorf("parsing //go:build line: missing )")},
32 {"gc gc", false, fmt.Errorf("parsing //go:build line: unexpected tag")},
33 {"(gc))", false, fmt.Errorf("parsing //go:build line: unexpected )")},
34 }
35
36 func TestBuildParser(t *testing.T) {
37 for _, tt := range buildParserTests {
38 matched, err := matchexpr(tt.x)
39 if matched != tt.matched || !reflect.DeepEqual(err, tt.err) {
40 t.Errorf("matchexpr(%q) = %v, %v; want %v, %v", tt.x, matched, err, tt.matched, tt.err)
41 }
42 }
43 }
44
View as plain text