aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/dist
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2021-11-24 10:35:21 -0500
committerRuss Cox <rsc@golang.org>2021-11-25 00:02:52 +0000
commitb2a5a3771f5efdb499da215298c7bcc2f493b4f1 (patch)
tree37ba287cd57df342497c03dcdbe763fb711e0ea2 /src/cmd/dist
parentb77f5f9667c6e5c2081d94163dd7d11c03fa2b8e (diff)
downloadgo-b2a5a3771f5efdb499da215298c7bcc2f493b4f1.tar.gz
go-b2a5a3771f5efdb499da215298c7bcc2f493b4f1.zip
cmd/dist: add buildtag parsing test
Forgot to 'git add' this test written as part of CL 359314. For #41184. Change-Id: I2ebd48fd62a2053c8b16e5a8c48c1e11d1b86d5b Reviewed-on: https://go-review.googlesource.com/c/go/+/366894 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/cmd/dist')
-rw-r--r--src/cmd/dist/buildtag_test.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/cmd/dist/buildtag_test.go b/src/cmd/dist/buildtag_test.go
new file mode 100644
index 0000000000..f64abfd1f1
--- /dev/null
+++ b/src/cmd/dist/buildtag_test.go
@@ -0,0 +1,43 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import (
+ "fmt"
+ "reflect"
+ "testing"
+)
+
+var buildParserTests = []struct {
+ x string
+ matched bool
+ err error
+}{
+ {"gc", true, nil},
+ {"gccgo", false, nil},
+ {"!gc", false, nil},
+ {"gc && gccgo", false, nil},
+ {"gc || gccgo", true, nil},
+ {"gc || (gccgo && !gccgo)", true, nil},
+ {"gc && (gccgo || !gccgo)", true, nil},
+ {"!(gc && (gccgo || !gccgo))", false, nil},
+ {"gccgo || gc", true, nil},
+ {"!(!(!(gccgo || gc)))", false, nil},
+ {"compiler_bootstrap", false, nil},
+ {"cmd_go_bootstrap", true, nil},
+ {"syntax(error", false, fmt.Errorf("parsing //go:build line: unexpected (")},
+ {"(gc", false, fmt.Errorf("parsing //go:build line: missing )")},
+ {"gc gc", false, fmt.Errorf("parsing //go:build line: unexpected tag")},
+ {"(gc))", false, fmt.Errorf("parsing //go:build line: unexpected )")},
+}
+
+func TestBuildParser(t *testing.T) {
+ for _, tt := range buildParserTests {
+ matched, err := matchexpr(tt.x)
+ if matched != tt.matched || !reflect.DeepEqual(err, tt.err) {
+ t.Errorf("matchexpr(%q) = %v, %v; want %v, %v", tt.x, matched, err, tt.matched, tt.err)
+ }
+ }
+}