mirror of
https://github.com/golang/go
synced 2024-11-11 20:20:23 -07:00
test: fix timeout code for invoking compiler
When running go tool compile, go tool is running compile as a subprocess. Killing go tool with Process.Kill leaves the subprocess behind. Send an interrupt signal first, which it can forward on to the compile subprocess. Also report the timeout in errorcheck -t. Change-Id: I7ae0029bbe543ed7e60e0fea790dd0739d10bcaa Reviewed-on: https://go-review.googlesource.com/c/go/+/282313 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
6728118e0a
commit
fefad1dc85
14
test/run.go
14
test/run.go
@ -467,6 +467,8 @@ func goGcflagsIsEmpty() bool {
|
||||
return "" == os.Getenv("GO_GCFLAGS")
|
||||
}
|
||||
|
||||
var errTimeout = errors.New("command exceeded time limit")
|
||||
|
||||
// run runs a test.
|
||||
func (t *test) run() {
|
||||
start := time.Now()
|
||||
@ -642,16 +644,18 @@ func (t *test) run() {
|
||||
case err = <-done:
|
||||
// ok
|
||||
case <-tick.C:
|
||||
cmd.Process.Signal(os.Interrupt)
|
||||
time.Sleep(1 * time.Second)
|
||||
cmd.Process.Kill()
|
||||
err = <-done
|
||||
// err = errors.New("Test timeout")
|
||||
<-done
|
||||
err = errTimeout
|
||||
}
|
||||
tick.Stop()
|
||||
}
|
||||
} else {
|
||||
err = cmd.Run()
|
||||
}
|
||||
if err != nil {
|
||||
if err != nil && err != errTimeout {
|
||||
err = fmt.Errorf("%s\n%s", err, buf.Bytes())
|
||||
}
|
||||
return buf.Bytes(), err
|
||||
@ -731,6 +735,10 @@ func (t *test) run() {
|
||||
t.err = fmt.Errorf("compilation succeeded unexpectedly\n%s", out)
|
||||
return
|
||||
}
|
||||
if err == errTimeout {
|
||||
t.err = fmt.Errorf("compilation timed out")
|
||||
return
|
||||
}
|
||||
} else {
|
||||
if err != nil {
|
||||
t.err = err
|
||||
|
Loading…
Reference in New Issue
Block a user