| // 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 build |
| |
| import ( |
| "runtime" |
| "testing" |
| ) |
| |
| var ( |
| thisOS = runtime.GOOS |
| thisArch = runtime.GOARCH |
| otherOS = anotherOS() |
| otherArch = anotherArch() |
| ) |
| |
| func anotherOS() string { |
| if thisOS != "darwin" && thisOS != "ios" { |
| return "darwin" |
| } |
| return "linux" |
| } |
| |
| func anotherArch() string { |
| if thisArch != "amd64" { |
| return "amd64" |
| } |
| return "386" |
| } |
| |
| type GoodFileTest struct { |
| name string |
| result bool |
| } |
| |
| var tests = []GoodFileTest{ |
| {"file.go", true}, |
| {"file.c", true}, |
| {"file_foo.go", true}, |
| {"file_" + thisArch + ".go", true}, |
| {"file_" + otherArch + ".go", false}, |
| {"file_" + thisOS + ".go", true}, |
| {"file_" + otherOS + ".go", false}, |
| {"file_" + thisOS + "_" + thisArch + ".go", true}, |
| {"file_" + otherOS + "_" + thisArch + ".go", false}, |
| {"file_" + thisOS + "_" + otherArch + ".go", false}, |
| {"file_" + otherOS + "_" + otherArch + ".go", false}, |
| {"file_foo_" + thisArch + ".go", true}, |
| {"file_foo_" + otherArch + ".go", false}, |
| {"file_" + thisOS + ".c", true}, |
| {"file_" + otherOS + ".c", false}, |
| } |
| |
| func TestGoodOSArch(t *testing.T) { |
| for _, test := range tests { |
| if Default.goodOSArchFile(test.name, make(map[string]bool)) != test.result { |
| t.Fatalf("goodOSArchFile(%q) != %v", test.name, test.result) |
| } |
| } |
| } |