diff options
author | Bryan C. Mills <bcmills@google.com> | 2022-06-30 13:30:48 -0400 |
---|---|---|
committer | Gopher Robot <gobot@golang.org> | 2022-06-30 18:10:53 +0000 |
commit | 84db00ffd1c0e11180fc433df1ef7521de37a49b (patch) | |
tree | 1a444337bb46b921e014f39a2ba21a7963f47547 /src/cmd/go/script_test.go | |
parent | 31b8c23c5702f129aca9241bbb2132c90b1929cc (diff) | |
download | go-84db00ffd1c0e11180fc433df1ef7521de37a49b.tar.gz go-84db00ffd1c0e11180fc433df1ef7521de37a49b.zip |
cmd/go: add a 'sleep' command for script tests
Due to mtime skew we don't index mutable packages with an mtime
younger than 2 seconds. In order to test indexed packages reliably, we
want to be able to sleep long enough for the files in the package to be cached.
(As an alternative we could instead use os.Chtimes to fake old enough
timestamps, but sleeping keeps the tests more realistic.)
For #53586.
Change-Id: I1873f47c55a72d928451593b8c989f0092a557db
Reviewed-on: https://go-review.googlesource.com/c/go/+/415474
Auto-Submit: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Russ Cox <rsc@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Diffstat (limited to 'src/cmd/go/script_test.go')
-rw-r--r-- | src/cmd/go/script_test.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/cmd/go/script_test.go b/src/cmd/go/script_test.go index 3ad0608725..5e82929f19 100644 --- a/src/cmd/go/script_test.go +++ b/src/cmd/go/script_test.go @@ -521,6 +521,7 @@ var scriptCmds = map[string]func(*testScript, simpleStatus, []string){ "mv": (*testScript).cmdMv, "rm": (*testScript).cmdRm, "skip": (*testScript).cmdSkip, + "sleep": (*testScript).cmdSleep, "stale": (*testScript).cmdStale, "stderr": (*testScript).cmdStderr, "stdout": (*testScript).cmdStdout, @@ -921,6 +922,21 @@ func (ts *testScript) cmdSkip(want simpleStatus, args []string) { ts.t.Skip() } +// sleep sleeps for the given duration +func (ts *testScript) cmdSleep(want simpleStatus, args []string) { + if len(args) != 1 { + ts.fatalf("usage: sleep duration") + } + d, err := time.ParseDuration(args[0]) + if err != nil { + ts.fatalf("sleep: %v", err) + } + if want != success { + ts.fatalf("unsupported: %v sleep", want) + } + time.Sleep(d) +} + // stale checks that the named build targets are stale. func (ts *testScript) cmdStale(want simpleStatus, args []string) { if len(args) == 0 { |