packages feed

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