diff options
Diffstat (limited to 'tests/core/transition/cmdline_test.go')
-rw-r--r-- | tests/core/transition/cmdline_test.go | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/tests/core/transition/cmdline_test.go b/tests/core/transition/cmdline_test.go new file mode 100644 index 00000000..1de0b3f5 --- /dev/null +++ b/tests/core/transition/cmdline_test.go @@ -0,0 +1,84 @@ +// Copyright 2020 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cmdline_test + +import ( + "bytes" + "testing" + + "github.com/bazelbuild/rules_go/go/tools/bazel_testing" +) + +func TestMain(m *testing.M) { + bazel_testing.TestMain(m, bazel_testing.Args{ + Main: ` +-- BUILD.bazel -- +load("@io_bazel_rules_go//go:def.bzl", "go_binary") + +go_binary( + name = "maybe_pure", + srcs = [ + "not_pure.go", + "pure.go", + ], +) + +-- not_pure.go -- +// +build cgo + +package main + +import "fmt" + +func main() { + fmt.Println("not pure") +} + +-- pure.go -- +// +build !cgo + +package main + +import "fmt" + +func main() { + fmt.Println("pure") +} +`, + }) +} + +// TestPure checks that the --@io_bazel_rules_go//go/config:pure flag controls +// whether a target is built in pure mode. It doesn't actually require cgo, +// since that doesn't work within go_bazel_test on Windows. +func TestPure(t *testing.T) { + out, err := bazel_testing.BazelOutput("run", "//:maybe_pure") + if err != nil { + t.Fatalf("running //:maybe_pure without flag: %v", err) + } + got := string(bytes.TrimSpace(out)) + if want := "not pure"; got != want { + t.Fatalf("got %q; want %q", got, want) + } + + out, err = bazel_testing.BazelOutput("run", "--@io_bazel_rules_go//go/config:pure", "//:maybe_pure") + if err != nil { + t.Fatalf("running //:maybe_pure with flag: %v", err) + } + got = string(bytes.TrimSpace(out)) + if want := "pure"; got != want { + t.Fatalf("got %q; want %q", got, want) + } +} |