// 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 "}}, {"$GOARCH", []string{runtime.GOARCH}}, {"$GOOS", []string{runtime.GOOS}}, {"$GOFILE", []string{"proc.go"}}, {"$GOPACKAGE", []string{"sys"}}, {"a $XXNOTDEFINEDXX b", []string{"a", "", "b"}}, {"/$XXNOTDEFINED/", []string{"//"}}, {"/$DOLLAR/", []string{"/$/"}}, {"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.setEnv() g.setShorthand([]string{"-command", "yacc", "go", "tool", "yacc"}) for _, test := range splitTests { // First with newlines. got := g.split("//go:generate " + test.in + "\n") if !reflect.DeepEqual(got, test.out) { t.Errorf("split(%q): got %q expected %q", test.in, got, test.out) } // Then with CRLFs, thank you Windows. got = g.split("//go:generate " + test.in + "\r\n") if !reflect.DeepEqual(got, test.out) { t.Errorf("split(%q): got %q expected %q", test.in, got, test.out) } } }