Skip to content

Commit f28313d

Browse files
committed
Bugfix for printing v1
1 parent 51e0c36 commit f28313d

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

src/Print.hs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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
7777
printStdouterr prefix (Just (Lines _ s)) = printf "%s\n%s\n" prefix s -- TODO trailing \n ?
7878
printStdouterr 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

8587
mkEither :: Bool -> a -> Either a a
8688
mkEither True = Right
@@ -89,3 +91,6 @@ mkEither False = Left
8991
fromEither :: Either a a -> a
9092
fromEither = 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

Comments
 (0)