packages feed

monad-throw-exit-0.1.0.0: test/Spec.hs

import           System.Exit          (ExitCode (ExitFailure, ExitSuccess))
import qualified System.Process.Typed as P
import           Test.Hspec
import           Test.QuickCheck      (NonZero (getNonZero), property)


main :: IO ()
main = hspec $ do
  describe "exitWith" $
    it "exit with the given exit code" . property $ \code0 -> do
      let code = getNonZero code0
      result <- P.runProcess $ P.proc "monad-throw-exit-example-command" ["exitWith", show code]
      result `shouldBe` ExitFailure code

  describe "exitSuccess" $
    it "exit with the successfull exit code" $ do
      result <- P.runProcess $ P.proc "monad-throw-exit-example-command" ["exitSuccess"]
      result `shouldBe` ExitSuccess

  describe "exitFailure" $
    it "exit with the exit code 1" $ do
      result <- P.runProcess $ P.proc "monad-throw-exit-example-command" ["exitFailure"]
      result `shouldBe` ExitFailure 1