hackport-0.8.0.0: cabal/cabal-testsuite/src/Test/Cabal/TestCode.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveDataTypeable #-}
-- | Exception type like 'ExitCode' but with more information
-- than just integer.
module Test.Cabal.TestCode (
-- * TestCode
TestCode (..),
displayTestCode,
isTestCodeSkip,
) where
import Control.Exception (Exception (..))
import Data.Typeable (Typeable)
-------------------------------------------------------------------------------
-- TestCode
-------------------------------------------------------------------------------
data TestCode
= TestCodeOk
| TestCodeSkip String
| TestCodeKnownFail
| TestCodeUnexpectedOk
| TestCodeFail
deriving (Eq, Show, Read, Typeable)
instance Exception TestCode
#if MIN_VERSION_base(4,8,0)
where
displayException = displayTestCode
#endif
displayTestCode :: TestCode -> String
displayTestCode TestCodeOk = "OK"
displayTestCode (TestCodeSkip msg) = "SKIP " ++ msg
displayTestCode TestCodeKnownFail = "OK (known failure)"
displayTestCode TestCodeUnexpectedOk = "FAIL (unexpected success)"
displayTestCode TestCodeFail = "FAIL"
isTestCodeSkip :: TestCode -> Bool
isTestCodeSkip (TestCodeSkip _) = True
isTestCodeSkip _ = False