]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/run.go
[dev.regabi] all: merge master (dab3e5a) into dev.regabi
[gostls13.git] / test / run.go
index 09f9717cc0c0484c7c182d5d4b06e96ae35ad938..116f983a97a151562fc67392aea41e7c4e292356 100644 (file)
@@ -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