mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-18 19:10:21 -07:00
Extend script for generating the code which runs tests
Now the number of runs each can be set, and the failures and successes are summarized in the same way as the core Properties.hs. There is some duplicated code which could be avoided by modifying Properties.hs.
This commit is contained in:
parent
dea9cdea5e
commit
334344b804
@ -6,7 +6,7 @@ Usage (your QuickCheck-1 version may vary):
|
||||
|
||||
> ln -s ../../xmonad/tests/Properties.hs .
|
||||
> runghc genMain.hs > Main.hs
|
||||
> ghc -DTESTING -i.. -i. -package QuickCheck-1.2.0.0 Main.hs -e main
|
||||
> ghc -DTESTING -i.. -i. -package QuickCheck-1.2.0.0 Main.hs -e ':main 200'
|
||||
|
||||
-}
|
||||
module Main where
|
||||
@ -44,9 +44,23 @@ genModule :: [String] -> [String] -> Doc
|
||||
genModule imports props = vcat [header,imports', main ]
|
||||
where
|
||||
header = text "module Main where"
|
||||
imports' = text "import Test.QuickCheck"
|
||||
imports' = text "import Test.QuickCheck; import Data.Maybe; \
|
||||
\import System.Environment; import Text.Printf; \
|
||||
\import Properties hiding (main); import Control.Monad"
|
||||
$$ vcat [ text "import qualified" <+> text im | im <- imports ]
|
||||
props' = vcat [ text "quickCheck" <+> text p | p <- props ]
|
||||
main = hang (text "main = do") 4 props'
|
||||
props' = [ parens $ doubleQuotes (text p) <> comma <> text "mytest" <+> text p
|
||||
| p <- props ]
|
||||
main = hang (text "main = do") 4 $
|
||||
text "n <- maybe (return 100) readIO . listToMaybe =<< getArgs"
|
||||
$$
|
||||
hang (text "let props = ") 8
|
||||
(brackets $ foldr1 (\x xs -> x <> comma $$ xs) props')
|
||||
$$
|
||||
text "(results, passed) <- liftM unzip $ \
|
||||
\mapM (\\(s,a) -> printf \"%-40s: \" s >> a n) props"
|
||||
$$
|
||||
text "printf \"Passed %d tests!\\n\" (sum passed)"
|
||||
$$
|
||||
text "when (any not results) $ fail \"Not all tests passed!\""
|
||||
|
||||
io x = liftIO x
|
||||
|
Loading…
x
Reference in New Issue
Block a user