aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/script_test.go
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2022-06-30 13:30:48 -0400
committerGopher Robot <gobot@golang.org>2022-06-30 18:10:53 +0000
commit84db00ffd1c0e11180fc433df1ef7521de37a49b (patch)
tree1a444337bb46b921e014f39a2ba21a7963f47547 /src/cmd/go/script_test.go
parent31b8c23c5702f129aca9241bbb2132c90b1929cc (diff)
downloadgo-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.go16
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 {