Fix broken tests
authorPhil Ruffwind <rf@rufflewind.com>
Mon, 30 Jan 2017 16:49:58 +0000 (11:49 -0500)
committerBen Gamari <ben@smart-cactus.org>
Mon, 30 Jan 2017 19:00:23 +0000 (14:00 -0500)
1. DoParamM requires the FlexibleContexts pragma now.

2. topHandler02 and topHandler03 were broken as timeout.py failed to
   translate signals to exit codes.

3. topHandler03 does not produce a consistent stderr, as it depends on
   what the user has /bin/sh set to.  dash writes "Terminated" whereas
   bash and zsh produce nothing in non-interactive mode.

4. The remaining tests are broken due to changes in the error message
   formatting.

Test Plan: validate

Reviewers: thomie, dfeuer, austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: Phyx, dfeuer

Differential Revision: https://phabricator.haskell.org/D2807

libraries/base/tests/all.T
libraries/base/tests/topHandler03.stderr [deleted file]
testsuite/tests/deriving/should_fail/drvfail006.stderr
testsuite/tests/rebindable/DoParamM.stderr
testsuite/tests/typecheck/should_compile/tc232.hs
testsuite/timeout/timeout.py

index 3211054..3be05af 100644 (file)
@@ -138,9 +138,6 @@ test('CatEntail', normal, compile, [''])
 test('T7653', high_memory_usage, compile_and_run, [''])
 test('T7787', normal, compile_and_run, [''])
 
-def stderr_contains(pattern):
-    return normalise_errmsg_fun(lambda s: pattern if pattern in s else s)
-
 test('topHandler01', when(opsys('mingw32'), skip), compile_and_run, [''])
 test('topHandler02',
      [when(opsys('mingw32'), skip),
@@ -148,7 +145,7 @@ test('topHandler02',
       signal_exit_code(2)
      ], compile_and_run, [''])
 test('topHandler03',
-     [when(opsys('mingw32'), skip), stderr_contains('Terminated'),
+     [when(opsys('mingw32'), skip), ignore_stderr,
       signal_exit_code(15)
      ], compile_and_run, [''])
 test('topHandler04',
diff --git a/libraries/base/tests/topHandler03.stderr b/libraries/base/tests/topHandler03.stderr
deleted file mode 100644 (file)
index e45928c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Terminated
index 3968d97..61900e8 100644 (file)
@@ -1,6 +1,4 @@
 
-drvfail006.hs:9:45:
-    Can't make a derived instance of `MonadState T'
-      (even with cunning newtype deriving):
-      `MonadState' does not have arity 1
-    In the newtype declaration for `T'
+drvfail006.hs:9:45: error:
+    • ‘MonadState’ is not a unary constraint, as expected by a deriving clause
+    • In the newtype declaration for ‘T’
index 6328d08..8d37640 100644 (file)
@@ -11,12 +11,12 @@ DoParamM.hs:286:28: error:
         Actual type: LIO Unlocked Locked ()
     • In a stmt of a 'do' block: tlock2_do
       In the expression:
-        do { tlock2_do;
-             tlock2_do }
+        do tlock2_do
+           tlock2_do
       In an equation for ‘tlock4_do’:
           tlock4_do
-            = do { tlock2_do;
-                   tlock2_do }
+            = do tlock2_do
+                 tlock2_do
 
 DoParamM.hs:302:37: error:
     • Couldn't match type ‘Locked’ with ‘Unlocked’
@@ -24,11 +24,11 @@ DoParamM.hs:302:37: error:
         Actual type: LIO Locked Unlocked ()
     • In a stmt of a 'do' block: unlock
       In the expression:
-        do { tlock2_do;
-             unlock;
-             unlock }
+        do tlock2_do
+           unlock
+           unlock
       In an equation for ‘tlock4'_do’:
           tlock4'_do
-            = do { tlock2_do;
-                   unlock;
-                   unlock }
+            = do tlock2_do
+                 unlock
+                 unlock
index 9d5ede3..2fc8544 100644 (file)
@@ -1,3 +1,4 @@
+{-# LANGUAGE FlexibleContexts #-}
 {-# OPTIONS_GHC -fno-warn-redundant-constraints #-}
 
 -- This one fixed the constraint solver (Lint error)
index 51fb63c..f3468ad 100644 (file)
@@ -42,8 +42,12 @@ try:
         (pid2, res) = os.waitpid(pid, 0)
         if (os.WIFEXITED(res)):
             sys.exit(os.WEXITSTATUS(res))
-        else:
-            sys.exit(res)
+        elif os.WIFSIGNALED(res):
+            # represent signals using the Bourne shell convention
+            sys.exit(128 + os.WTERMSIG(res))
+        else:                           # WIFCONTINUED or WIFSTOPPED
+            killProcess(pid)
+            sys.exit(99)                # unexpected
 
 except KeyboardInterrupt:
     sys.exit(98)