}
n := len(l)
if n >= 2 && knownOS[l[n-2]] && knownArch[l[n-1]] {
- if allTags != nil {
- allTags[l[n-2]] = true
- allTags[l[n-1]] = true
- }
- if l[n-1] != ctxt.GOARCH {
- return false
- }
- if ctxt.GOOS == "android" && l[n-2] == "linux" {
- return true
- }
- return l[n-2] == ctxt.GOOS
+ return ctxt.match(l[n-1], allTags) && ctxt.match(l[n-2], allTags)
}
- if n >= 1 && knownOS[l[n-1]] {
- if allTags != nil {
- allTags[l[n-1]] = true
- }
- if ctxt.GOOS == "android" && l[n-1] == "linux" {
- return true
- }
- return l[n-1] == ctxt.GOOS
- }
- if n >= 1 && knownArch[l[n-1]] {
- if allTags != nil {
- allTags[l[n-1]] = true
- }
- return l[n-1] == ctxt.GOARCH
+ if n >= 1 && (knownOS[l[n-1]] || knownArch[l[n-1]]) {
+ return ctxt.match(l[n-1], allTags)
}
return true
}
}
}
+func TestGoodOSArchFile(t *testing.T) {
+ ctx := &Context{BuildTags: []string{"linux"}, GOOS:"darwin"}
+ m := map[string]bool{}
+ want := map[string]bool{"linux": true}
+ if !ctx.goodOSArchFile("hello_linux.go", m) {
+ t.Errorf("goodOSArchFile(hello_linux.go) = false, want true")
+ }
+ if !reflect.DeepEqual(m, want) {
+ t.Errorf("goodOSArchFile(hello_linux.go) tags = %v, want %v", m, want)
+ }
+}
+
type readNopCloser struct {
io.Reader
}