module Main(main) where -- imports -- import Test.HUnit import InterfaceDT as IDT import qualified TPreProc import qualified TLexer import qualified TSynAna import qualified TSemAna import qualified TInterCode import qualified TBackend import System.Exit import System.Process -- returns an appropriate ExitCode getExitCode :: Counts -> ExitCode getExitCode Counts { errors = 0, failures = 0 } = ExitSuccess getExitCode _ = ExitFailure 1 main :: IO () main = do counts <- runTestTT $ TestList ( TPreProc.testModule ++ TLexer.testModule ++ TSynAna.testModule ++ TSemAna.testModule ++ TInterCode.testModule ++ TBackend.testModule ) testexit <- system "tests/integration_tests" exitWith $ addexits testexit $ getExitCode counts addexits :: ExitCode -> ExitCode -> ExitCode addexits ExitSuccess ExitSuccess = ExitSuccess addexits _ (ExitFailure _) = ExitFailure 1 addexits (ExitFailure _) _ = ExitFailure 1