packages feed

fortran-src-extras-0.1.0: test/ExtrasSpec.hs

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