aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2021-06-24 14:32:21 -0700
committerMatthew Dempsky <mdempsky@google.com>2021-06-24 23:09:06 +0000
commit75ad32377378b4d6fa831b67a7f6aaf68cbe07d4 (patch)
tree55e412c0f37cf81257591e56138e6aa9f6715a33 /test
parent808dca3b2d305570b3f1e003ff221557405f59b9 (diff)
downloadgo-75ad32377378b4d6fa831b67a7f6aaf68cbe07d4.tar.gz
go-75ad32377378b4d6fa831b67a7f6aaf68cbe07d4.zip
[dev.typeparams] test: skip -G=3 testing under GOEXPERIMENT=unified
In normal build configurations, we test both -G=0 and -G=3 so that we can test both typecheck and types2. However, GOEXPERIMENT=unified always uses types2, so testing both is redundant. Change-Id: I697d2ad916d8b17cfaf4f0b6b32eec380d4e7906 Reviewed-on: https://go-review.googlesource.com/c/go/+/330755 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Trust: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Robert Griesemer <gri@golang.org>
Diffstat (limited to 'test')
-rw-r--r--test/run.go63
1 files changed, 39 insertions, 24 deletions
diff --git a/test/run.go b/test/run.go
index f8bb8c081c..ad92d8bb79 100644
--- a/test/run.go
+++ b/test/run.go
@@ -42,13 +42,36 @@ var (
linkshared = flag.Bool("linkshared", false, "")
updateErrors = flag.Bool("update_errors", false, "update error messages in test file based on compiler output")
runoutputLimit = flag.Int("l", defaultRunOutputLimit(), "number of parallel runoutput tests to run")
- generics = flag.String("G", "0,3", "a comma-separated list of -G compiler flags to test with")
force = flag.Bool("f", false, "run expected-failure generics tests rather than skipping them")
+ generics = flag.String("G", defaultGLevels, "a comma-separated list of -G compiler flags to test with")
shard = flag.Int("shard", 0, "shard index to run. Only applicable if -shards is non-zero.")
shards = flag.Int("shards", 0, "number of shards. If 0, all tests are run. This is used by the continuous build.")
)
+var unifiedEnabled, defaultGLevels = func() (bool, string) {
+ // TODO(mdempsky): Change this to just "go env GOEXPERIMENT" after
+ // CL 328751 is merged back to dev.typeparams. In the mean time, we
+ // infer whether the "unified" experiment is default enabled by
+ // inspecting the output from `go tool compile -V`.
+ output := runOutput(goTool(), "tool", "compile", "-V")
+
+ // TODO(mdempsky): This will give false negatives if the unified
+ // experiment is enabled by default, but presumably at that point we
+ // won't need to disable tests for it anymore anyway.
+ enabled := strings.Contains(output, "unified")
+
+ // Normal test runs should test with both -G=0 and -G=3 for types2
+ // coverage. But the unified experiment always uses types2, so
+ // testing with -G=3 is redundant.
+ glevels := "0,3"
+ if enabled {
+ glevels = "0"
+ }
+
+ return enabled, glevels
+}()
+
// defaultAllCodeGen returns the default value of the -all_codegen
// flag. By default, we prefer to be fast (returning false), except on
// the linux-amd64 builder that's already very fast, so we get more
@@ -58,9 +81,8 @@ func defaultAllCodeGen() bool {
}
var (
- goos, goarch string
- cgoEnabled bool
- unifiedEnabled bool
+ goos, goarch string
+ cgoEnabled bool
// dirs are the directories to look for *.go files in.
// TODO(bradfitz): just use all directories?
@@ -97,26 +119,8 @@ func main() {
goos = getenv("GOOS", runtime.GOOS)
goarch = getenv("GOARCH", runtime.GOARCH)
- cgoCmd := exec.Command(goTool(), "env", "CGO_ENABLED")
- cgoEnv, err := cgoCmd.Output()
- if err != nil {
- log.Fatalf("running %v: %v", cgoCmd, err)
- }
- cgoEnabled, _ = strconv.ParseBool(strings.TrimSpace(string(cgoEnv)))
-
- // TODO(mdempsky): Change this to just "go env GOEXPERIMENT" after
- // CL 328751 is merged back to dev.typeparams. In the mean time, we
- // infer whether the "unified" experiment is defult enabled by
- // inspecting the output from `go tool compile -V`.
- compileCmd := exec.Command(goTool(), "tool", "compile", "-V")
- compileOutput, err := compileCmd.Output()
- if err != nil {
- log.Fatalf("running %v: %v", compileCmd, err)
- }
- // TODO(mdempsky): This will give false negatives if the unified
- // experiment is enabled by default, but presumably at that point we
- // won't need to disable tests for it anymore anyway.
- unifiedEnabled = strings.Contains(string(compileOutput), "unified")
+ cgoEnv := runOutput(goTool(), "env", "CGO_ENABLED")
+ cgoEnabled, _ = strconv.ParseBool(strings.TrimSpace(cgoEnv))
findExecCmd()
@@ -203,6 +207,17 @@ func main() {
}
}
+// runOutput runs the specified command and returns its output as a
+// string. If the command fails, runOutput logs the error and exits.
+func runOutput(name string, args ...string) string {
+ cmd := exec.Command(name, args...)
+ output, err := cmd.Output()
+ if err != nil {
+ log.Fatalf("running %v: %v", cmd, err)
+ }
+ return string(output)
+}
+
// goTool reports the path of the go tool to use to run the tests.
// If possible, use the same Go used to run run.go, otherwise
// fallback to the go version found in the PATH.