]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: add simple test for generate's line parser
authorRob Pike <r@golang.org>
Mon, 25 Aug 2014 18:07:08 +0000 (11:07 -0700)
committerRob Pike <r@golang.org>
Mon, 25 Aug 2014 18:07:08 +0000 (11:07 -0700)
LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/128710043

src/cmd/go/generate_test.go [new file with mode: 0644]

diff --git a/src/cmd/go/generate_test.go b/src/cmd/go/generate_test.go
new file mode 100644 (file)
index 0000000..6be8157
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright 2011 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 (
+       "reflect"
+       "runtime"
+       "testing"
+)
+
+type splitTest struct {
+       in  string
+       out []string
+}
+
+var splitTests = []splitTest{
+       {"", nil},
+       {"x", []string{"x"}},
+       {" a b\tc ", []string{"a", "b", "c"}},
+       {` " a " `, []string{" a "}},
+       {"$GOFILE", []string{"proc.go"}},
+       {"a $XXNOTDEFINEDXX b", []string{"a", "", "b"}},
+       {"/$XXNOTDEFINED/", []string{"//"}},
+       {"$GOARCH", []string{runtime.GOARCH}},
+       {"yacc -o $GOARCH/yacc_$GOFILE", []string{"go", "tool", "yacc", "-o", runtime.GOARCH + "/yacc_proc.go"}},
+}
+
+func TestGenerateCommandParse(t *testing.T) {
+       g := &Generator{
+               r:        nil, // Unused here.
+               path:     "/usr/ken/sys/proc.go",
+               dir:      "/usr/ken/sys",
+               file:     "proc.go",
+               pkg:      "sys",
+               commands: make(map[string][]string),
+       }
+       g.setShorthand([]string{"-command", "yacc", "go", "tool", "yacc"})
+       for _, test := range splitTests {
+               got := g.split("//go:generate " + test.in)
+               if !reflect.DeepEqual(got, test.out) {
+                       t.Errorf("split(%q): got %q expected %q", test.in, got, test.out)
+               }
+       }
+}