libgo: update to go1.9
[official-gcc.git] / libgo / go / cmd / go / internal / generate / generate_test.go
blobdefc15387f39a30b6111e4482cb8ab1f746883bb
1 // Copyright 2011 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
5 package generate
7 import (
8 "reflect"
9 "runtime"
10 "testing"
13 type splitTest struct {
14 in string
15 out []string
18 var splitTests = []splitTest{
19 {"", nil},
20 {"x", []string{"x"}},
21 {" a b\tc ", []string{"a", "b", "c"}},
22 {` " a " `, []string{" a "}},
23 {"$GOARCH", []string{runtime.GOARCH}},
24 {"$GOOS", []string{runtime.GOOS}},
25 {"$GOFILE", []string{"proc.go"}},
26 {"$GOPACKAGE", []string{"sys"}},
27 {"a $XXNOTDEFINEDXX b", []string{"a", "", "b"}},
28 {"/$XXNOTDEFINED/", []string{"//"}},
29 {"/$DOLLAR/", []string{"/$/"}},
30 {"yacc -o $GOARCH/yacc_$GOFILE", []string{"go", "tool", "yacc", "-o", runtime.GOARCH + "/yacc_proc.go"}},
33 func TestGenerateCommandParse(t *testing.T) {
34 g := &Generator{
35 r: nil, // Unused here.
36 path: "/usr/ken/sys/proc.go",
37 dir: "/usr/ken/sys",
38 file: "proc.go",
39 pkg: "sys",
40 commands: make(map[string][]string),
42 g.setEnv()
43 g.setShorthand([]string{"-command", "yacc", "go", "tool", "yacc"})
44 for _, test := range splitTests {
45 // First with newlines.
46 got := g.split("//go:generate " + test.in + "\n")
47 if !reflect.DeepEqual(got, test.out) {
48 t.Errorf("split(%q): got %q expected %q", test.in, got, test.out)
50 // Then with CRLFs, thank you Windows.
51 got = g.split("//go:generate " + test.in + "\r\n")
52 if !reflect.DeepEqual(got, test.out) {
53 t.Errorf("split(%q): got %q expected %q", test.in, got, test.out)