blob: 3da4358fa1435ddb38ee4d5b57e7116935bda861 [file] [log] [blame]
[short] skip
env GO111MODULE=on
env GOCACHE=$WORK/gocache
env GODEBUG=gocachetest=1
# The first run of a test should not be cached.
# The second run should be.
go test -run=WriteTmp .
! stdout '(cached)'
go test -run=WriteTmp .
stdout '(cached)'
# 'go test' without arguments should never be cached.
go test -run=WriteTmp
! stdout '(cached)'
go test -run=WriteTmp
! stdout '(cached)'
# We should never cache a test run from command-line files.
go test -run=WriteTmp ./foo_test.go
! stdout '(cached)'
go test -run=WriteTmp ./foo_test.go
! stdout '(cached)'
[!exec:sleep] stop
# The go command refuses to cache access to files younger than 2s, so sleep that long.
exec sleep 2
# Touching a file that the test reads from within its testdata should invalidate the cache.
go test -run=ReadTestdata .
! stdout '(cached)'
go test -run=ReadTestdata .
stdout '(cached)'
cp testdata/bar.txt testdata/foo.txt
go test -run=ReadTestdata .
! stdout '(cached)'
-- go.mod --
module golang.org/issue/29111/foo
-- foo.go --
package foo
-- testdata/foo.txt --
foo
-- testdata/bar.txt --
bar
-- foo_test.go --
package foo_test
import (
"os"
"path/filepath"
"testing"
)
func TestWriteTmp(t *testing.T) {
dir, err := os.MkdirTemp("", "")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)
err = os.WriteFile(filepath.Join(dir, "x"), nil, 0666)
if err != nil {
t.Fatal(err)
}
}
func TestReadTestdata(t *testing.T) {
_, err := os.ReadFile("testdata/foo.txt")
if err != nil {
t.Fatal(err)
}
}