@@ -24,23 +24,23 @@ printShellTest format actualMode ShellTest{command=c,stdin=i,comments=comments,
2424 printComments comments
2525 printCommand " " c
2626 printStdin " <<<" i
27- printStdouterr " >>>" o
28- printStdouterr " >>>2" e
29- printExitStatus " >>>=" x
27+ printStdouterr " >>>" $ justMatcherOutErr o
28+ printStdouterr " >>>2" $ justMatcherOutErr e
29+ printExitStatus True " >>>=" x
3030 " v2" -> do
3131 printComments comments
3232 printCommand " $ " c
3333 printStdin " <<<" i
3434 printStdouterr " >>>" o
3535 printStdouterr " >>>2" e
36- printExitStatus " >>>=" x
36+ printExitStatus False " >>>=" x
3737 " v3" -> do
3838 printComments comments
3939 printCommand " $ " c
4040 printStdin " <" i
4141 printStdouterr " >" o
4242 printStdouterr " >2" e
43- printExitStatus " >=" x
43+ printExitStatus False " >=" x
4444 _ -> fail $ " Unsupported --print format: " ++ format
4545 where
4646 computeResults :: Maybe String -> IO (Maybe Matcher , Maybe Matcher , Matcher )
@@ -77,10 +77,12 @@ printStdouterr _ (Just (NegativeNumeric _)) = fail "FATAL: Cannot handle Matcher
7777printStdouterr prefix (Just (Lines _ s)) = printf " %s\n %s\n " prefix s -- TODO trailing \n ?
7878printStdouterr prefix (Just regex) = printf " %s %s\n " prefix (show regex)
7979
80- printExitStatus :: String -> Matcher -> IO ()
81- printExitStatus _ (Numeric " 0" ) = return ()
82- printExitStatus _ (Lines _ _) = fail " FATAL: Cannot handle Matcher (Lines) for exit status."
83- printExitStatus prefix s = printf " %s %s\n " prefix (show s)
80+ -- | Print exit status. First arg says 'alwaysPrintEvenIfZero'.
81+ printExitStatus :: Bool -> String -> Matcher -> IO ()
82+ printExitStatus _ _ (Lines _ _) = fail " FATAL: Cannot handle Matcher (Lines) for exit status."
83+ printExitStatus False _ (Numeric " 0" ) = return ()
84+ printExitStatus True prefix (Numeric " 0" ) = printf " %s 0\n " prefix
85+ printExitStatus _ prefix s = printf " %s %s\n " prefix (show s)
8486
8587mkEither :: Bool -> a -> Either a a
8688mkEither True = Right
@@ -89,3 +91,6 @@ mkEither False = Left
8991fromEither :: Either a a -> a
9092fromEither = either id id
9193
94+ -- | Make a Matcher out of Nothing.
95+ justMatcherOutErr :: Maybe Matcher -> Maybe Matcher
96+ justMatcherOutErr = Just . fromMaybe (Lines 0 " " )
0 commit comments