module Test.MuCheck.TestAdapter.Hspec where
import qualified Test.Hspec.Core.Runner as Hspec
import Test.MuCheck.TestAdapter
import Test.MuCheck.Utils.Print (showA, showAS)
import Data.Typeable
import Data.Either (partitionEithers)
import Data.List((\\))
deriving instance Typeable Hspec.Summary
type HspecSummary = Hspec.Summary
instance Summarizable HspecSummary where
testSummary mutantFiles results = Summary logMsg
where (errorCases, executedCases) = partitionEithers results
[successCases, failureCases] = map (\c -> filter (c . snd) executedCases) [isSuccess, isFailure]
errorFiles = mutantFiles \\ map fst executedCases
logMsg = showAS ["Details:",
"Loading error files:", showA errorFiles,
"Loading error messages:", showA errorCases,
"Successes:", showA successCases,
"Failure:", showA failureCases]
isSuccess (Hspec.Summary { Hspec.summaryExamples = se, Hspec.summaryFailures = sf } ) = sf == 0