packages feed

rail-compiler-editor-0.2.0.0: tests/Main.hs

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 TCodeOpt
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 ++
    TCodeOpt.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