tg.run("test", "-cover", "-short", "math", "strings")
}
-func TestCacheVet(t *testing.T) {
- skipIfGccgo(t, "gccgo has no standard packages")
- tg := testgo(t)
- defer tg.cleanup()
- tg.parallel()
-
- if strings.Contains(os.Getenv("GODEBUG"), "gocacheverify") {
- t.Skip("GODEBUG gocacheverify")
- }
- if testing.Short() {
- // In short mode, reuse cache.
- // Test failures may be masked if the cache has just the right entries already
- // (not a concern during all.bash, which runs in a clean cache).
- if cfg.Getenv("GOCACHE") == "off" {
- tooSlow(t)
- }
- } else {
- tg.makeTempdir()
- tg.setenv("GOCACHE", tg.path("cache"))
- }
-
- // Check that second vet reuses cgo-derived inputs.
- // The first command could be build instead of vet,
- // except that if the cache is empty and there's a net.a
- // in GOROOT/pkg, the build will not bother to regenerate
- // and cache the cgo outputs, whereas vet always will.
- tg.run("vet", "os/user")
- tg.run("vet", "-x", "os/user")
- tg.grepStderrNot(`^(clang|gcc)`, "should not have run compiler")
- tg.grepStderrNot(`[\\/]cgo `, "should not have run cgo")
-}
-
func TestIssue22588(t *testing.T) {
// Don't get confused by stderr coming from tools.
tg := testgo(t)
}).(bool)
break
}
+ if strings.HasPrefix(cond.tag, "GODEBUG:") {
+ value := strings.TrimPrefix(cond.tag, "GODEBUG:")
+ parts := strings.Split(os.Getenv("GODEBUG"), ",")
+ for _, p := range parts {
+ if strings.TrimSpace(p) == value {
+ ok = true
+ break
+ }
+ }
+ break
+ }
if !imports.KnownArch[cond.tag] && !imports.KnownOS[cond.tag] && cond.tag != "gc" && cond.tag != "gccgo" {
ts.fatalf("unknown condition %q", cond.tag)
}
- [root] for os.Geteuid() == 0
- [symlink] for testenv.HasSymlink()
- [exec:prog] for whether prog is available for execution (found by exec.LookPath)
+ - [GODEBUG:value] for whether value is one of the comma-separated entries in the GODEBUG variable
A condition can be negated: [!short] means to run the rest of the line
when testing.Short() is false. Multiple conditions may be given for a single
--- /dev/null
+env GO111MODULE=off
+
+[short] skip
+[GODEBUG:gocacheverify] skip
+[gccgo] skip # gccgo has no standard packages
+
+# Start with a clean build cache:
+# test failures may be masked if the cache has just the right entries already.
+env GOCACHE=$WORK/cache
+
+# Run 'go vet os/user' once to warm up the cache.
+go vet os/user
+
+# Check that second vet reuses cgo-derived inputs.
+# The first command could be build instead of vet,
+# except that if the cache is empty and there's a net.a
+# in GOROOT/pkg, the build will not bother to regenerate
+# and cache the cgo outputs, whereas vet always will.
+
+go vet -x os/user
+! stderr '^(clang|gcc)' # should not have run compiler
+! stderr '[\\/]cgo ' # should not have run cgo