Commit 06b46c0d authored by Russ Cox's avatar Russ Cox

cmd/go: don't be clever about mtime precision in test

This doesn't happen enough in the tests to be worth debugging.
Empirically, I expect this to add 5 seconds to the overall 'go test -short cmd/go'
on systems with precise file systems, and nothing on systems without them
(like my Mac).

Fixes #12205.

Change-Id: I0a17cb37bdedcfc0f921c5ee658737f1698c153b
Reviewed-on: https://go-review.googlesource.com/17953Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
parent e357eb97
...@@ -89,8 +89,6 @@ func TestMain(m *testing.M) { ...@@ -89,8 +89,6 @@ func TestMain(m *testing.M) {
case "linux", "darwin", "freebsd", "windows": case "linux", "darwin", "freebsd", "windows":
canRace = canCgo && runtime.GOARCH == "amd64" canRace = canCgo && runtime.GOARCH == "amd64"
} }
measureTick("./testgo" + exeSuffix)
} }
// Don't let these environment variables confuse the test. // Don't let these environment variables confuse the test.
...@@ -109,24 +107,8 @@ func TestMain(m *testing.M) { ...@@ -109,24 +107,8 @@ func TestMain(m *testing.M) {
// The length of an mtime tick on this system. This is an estimate of // The length of an mtime tick on this system. This is an estimate of
// how long we need to sleep to ensure that the mtime of two files is // how long we need to sleep to ensure that the mtime of two files is
// different. // different.
var mtimeTick time.Duration // We used to try to be clever but that didn't always work (see golang.org/issue/12205).
var mtimeTick time.Duration = 1 * time.Second
// measureTick sets mtimeTick by looking at the rounding of the mtime
// of a file.
func measureTick(path string) {
st, err := os.Stat(path)
if err != nil {
// Default to one second, the most conservative value.
mtimeTick = time.Second
return
}
mtime := st.ModTime()
t := time.Microsecond
for mtime.Round(t).Equal(mtime) && t < time.Second {
t *= 10
}
mtimeTick = t
}
// Manage a single run of the testgo binary. // Manage a single run of the testgo binary.
type testgoData struct { type testgoData struct {
...@@ -1189,6 +1171,7 @@ func TestBuildOutputToDevNull(t *testing.T) { ...@@ -1189,6 +1171,7 @@ func TestBuildOutputToDevNull(t *testing.T) {
func TestPackageMainTestImportsArchiveNotBinary(t *testing.T) { func TestPackageMainTestImportsArchiveNotBinary(t *testing.T) {
tg := testgo(t) tg := testgo(t)
defer tg.cleanup() defer tg.cleanup()
tg.parallel()
gobin := filepath.Join(tg.pwd(), "testdata", "bin") gobin := filepath.Join(tg.pwd(), "testdata", "bin")
tg.creatingTemp(gobin) tg.creatingTemp(gobin)
tg.setenv("GOBIN", gobin) tg.setenv("GOBIN", gobin)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment