MuCheck-QuickCheck (empty) → 0.2.0.0
raw patch · 6 files changed
+96/−0 lines, 6 filesdep +MuCheckdep +QuickCheckdep +basesetup-changed
Dependencies added: MuCheck, QuickCheck, base
Files
- LICENSE +0/−0
- MuCheck-QuickCheck.cabal +40/−0
- Setup.hs +3/−0
- changes.md +0/−0
- src/Main.hs +22/−0
- src/Test/MuCheck/TestAdapter/QuickCheck.hs +31/−0
+ LICENSE view
+ MuCheck-QuickCheck.cabal view
@@ -0,0 +1,40 @@+name: MuCheck-QuickCheck+version: 0.2.0.0+synopsis: Automated Mutation Testing for QuickCheck tests+description: This package contains the test adapter for QuickCheck tests to use it with MuCheck+homepage: https://bitbucket.com/osu-testing/mucheck-quickcheck+license: GPL-2+license-file: LICENSE+author: Rahul Gopinath <rahul@gopinath.org>+maintainer: rahul@gopinath.org+category: Testing+build-type: Simple+cabal-version: >= 1.10+extra-source-files: changes.md++source-repository head+ type: git+ location: https://bitbucket.org/osu-testing/mucheck-quickcheck.git++source-repository this+ type: git+ location: https://bitbucket.org/osu-testing/mucheck-quickcheck.git+ tag: 0.2.0.0++executable mucheck-quickcheck+ build-depends: base >=4 && <5,+ QuickCheck>=2.6,+ MuCheck== 0.2.0.*+ default-language: Haskell2010+ hs-source-dirs: src+ main-is: Main.hs+ ghc-options: -Wall -fno-warn-orphans++library+ exposed-modules: Test.MuCheck.TestAdapter.QuickCheck+ build-depends: base >=4 && <5,+ QuickCheck>=2.6,+ MuCheck==0.2.0.*+ default-language: Haskell2010+ hs-source-dirs: src+
+ Setup.hs view
@@ -0,0 +1,3 @@+import Distribution.Simple++main = defaultMain
+ changes.md view
+ src/Main.hs view
@@ -0,0 +1,22 @@+module Main where+import System.Environment (getArgs, withArgs)++import Test.MuCheck (mucheck)+import Test.MuCheck.TestAdapter.QuickCheck+import Test.MuCheck.TestAdapter+import Test.MuCheck.Utils.Print++main :: IO ()+main = do+ val <- getArgs+ case val of+ ("-h" : _ ) -> help+ (fn : file : modulename : args) -> withArgs [] $ mucheck tsFn fn file modulename args+ _ -> error "Need function file modulename [args]\n\tUse -h to get help"+ where tsFn :: [MutantFilename] -> [InterpreterOutput QuickCheckSummary] -> Summary+ tsFn = testSummary+++help :: IO ()+help = putStrLn $ "mucheck function file modulename [args]\n" ++ showAS ["E.g:",+ " mucheck-quickcheck qsort Examples/QuickCheckTest.hs Examples.QuickCheckTest 'quickCheckResult idEmpProp' 'quickCheckResult revProp' 'quickCheckResult modelProp'",""]
+ src/Test/MuCheck/TestAdapter/QuickCheck.hs view
@@ -0,0 +1,31 @@+{-# LANGUAGE StandaloneDeriving, DeriveDataTypeable, TypeSynonymInstances #-}+-- | Module for using quickcheck properties+module Test.MuCheck.TestAdapter.QuickCheck where+import qualified Test.QuickCheck.Test as Qc+import Test.MuCheck.TestAdapter+import Test.MuCheck.Utils.Print (showA, showAS)++import Data.Typeable+import Data.List((\\))+import Data.Either (partitionEithers)++deriving instance Typeable Qc.Result+type QuickCheckSummary = Qc.Result++-- | Summarizable instance of `QuickCheck.Result`+instance Summarizable QuickCheckSummary where+ testSummary mutantFiles results = Summary logMsg+ where (errorCases, executedCases) = partitionEithers results+ [successCases, failureCases, gaveUpCases] = map (\c -> filter (c . snd) executedCases) [isSuccess, isFailure, isOther]+ errorFiles = mutantFiles \\ map fst executedCases+ logMsg = showAS ["Details:",+ "Loading error files:", showA errorFiles,+ "Loading error messages:", showA errorCases,+ "Successes:", showA successCases,+ "Failure:", showA failureCases,+ "Gaveups:", showA gaveUpCases]+ isSuccess = Qc.isSuccess+ isFailure Qc.Failure{} = True+ isFailure _ = False+ isOther Qc.GaveUp{} = True+ isOther _ = False