mirror of https://github.com/golang/go.git
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>
This commit is contained in:
parent
31b8c23c57
commit
84db00ffd1
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -176,6 +176,11 @@ The commands are:
|
|||
- skip [message]
|
||||
Mark the test skipped, including the message if given.
|
||||
|
||||
- sleep duration
|
||||
Sleep for the given duration (a time.Duration string).
|
||||
(Tests should generally poll instead of sleeping, but sleeping may sometimes
|
||||
be necessary, for example, to ensure that modified files have unique mtimes.)
|
||||
|
||||
- [!] stale path...
|
||||
The packages named by the path arguments must (or must not)
|
||||
be reported as "stale" by the go command.
|
||||
|
|
|
|||
Loading…
Reference in New Issue