module ExtrasSpec where
import Test.Hspec
import Control.Exception
import System.Exit ( ExitCode )
import System.IO ( stderr
, stdout
)
import System.IO.Silently ( hCapture_ )
import Language.Fortran.Extras
( errorHandler )
spec :: Spec
spec = describe "errorHandler" $ do
let
doErr s = do
_ <-
try $ errorHandler "foo" . Left . toException $ AssertionFailed s :: IO
(Either ExitCode ())
return ()
it "Prints to stderr" $ do
out <- hCapture_ [stderr] $ doErr "stderr"
null out `shouldBe` False
it "Doesn't print to stdout" $ do
out <- hCapture_ [stdout] $ doErr "stdout"
null out `shouldBe` True