halfs-0.2: ModuleTest.hs
module Main where
import Test.HUnit (Counts(..), showCounts)
import qualified Halfs (unitTests)
import qualified HighLevelTests (unitTests)
import qualified Halfs.FileHandle (unitTests)
import qualified Halfs.BasicIO (unitTests)
import qualified Halfs.TheBlockMap (unitTests)
import Halfs.TestFramework
-- base
import Control.Monad.Error(catchError)
import System.Environment(getArgs)
import System.Exit(exitWith, ExitCode(..))
main' :: IO ()
main' = do
args <- getArgs
let runFast = case args of
("--fast":_) -> True
_ -> False
counts <- catchError
(runAllTests (Halfs.FileHandle.unitTests
++ (HighLevelTests.unitTests runFast)
++ Halfs.TheBlockMap.unitTests
++ (Halfs.unitTests runFast)
++ Halfs.BasicIO.unitTests))
(\ e -> error "error")
putStrLn "---------"
putStrLn "Test Summary (may not include QC tests!):"
let allCounts@(Counts _ _ fails errs) = foldl1 combineCounts counts
putStrLn $ showCounts allCounts
if (fails > 0 || errs > 0)
then exitWith (ExitFailure (fails + errs))
else exitWith ExitSuccess
main :: IO ()
main = let handler = (\e -> putStrLn "blah3" >> print e >> error "woot")
in catch (catchError main' handler) handler