summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Main.hs7
-rw-r--r--tests/Main.hs8
-rw-r--r--tests/Properties.hs6
-rw-r--r--xmonad.cabal15
4 files changed, 21 insertions, 15 deletions
diff --git a/Main.hs b/Main.hs
index 006d738..2be135c 100644
--- a/Main.hs
+++ b/Main.hs
@@ -22,6 +22,10 @@ import System.Info
import System.Environment
import System.Posix.Process (executeFile)
+#ifdef TESTING
+import qualified Properties
+#endif
+
-- | The entry point into xmonad. Attempts to compile any custom main
-- for xmonad, and if it doesn't find one, just launches the default.
main :: IO ()
@@ -34,6 +38,9 @@ main = do
["--recompile"] -> recompile False >> return ()
["--recompile-force"] -> recompile True >> return ()
["--version"] -> putStrLn "xmonad 0.5"
+#ifdef TESTING
+ ("--run-tests":_) -> Properties.main
+#endif
_ -> fail "unrecognized flags"
-- | Build "~/.xmonad/xmonad.hs" with ghc, then execute it. If there are no
diff --git a/tests/Main.hs b/tests/Main.hs
deleted file mode 100644
index b08d55b..0000000
--- a/tests/Main.hs
+++ /dev/null
@@ -1,8 +0,0 @@
-module Main where
-
-import qualified Properties
-
--- This will run all of the QC files for xmonad core. Currently, that's just
--- Properties. If any more get added, sequence the main actions together.
-main = do
- Properties.main
diff --git a/tests/Properties.hs b/tests/Properties.hs
index 4f69f76..e96b03f 100644
--- a/tests/Properties.hs
+++ b/tests/Properties.hs
@@ -1,4 +1,4 @@
-{-# OPTIONS -fglasgow-exts #-}
+{-# OPTIONS -fglasgow-exts -w #-}
module Properties where
import XMonad.StackSet hiding (filter)
@@ -52,7 +52,6 @@ instance (Integral i, Integral s, Eq a, Arbitrary a, Arbitrary l, Arbitrary sd)
| s <- ls ]
return $ fromList (fromIntegral n, sds,fs,ls,lay)
- coarbitrary = error "no coarbitrary for StackSet"
-- | fromList. Build a new StackSet from a list of list of elements,
@@ -652,7 +651,7 @@ noOverlaps xs = and [ verts a `notOverlap` verts b
main :: IO ()
main = do
- args <- getArgs
+ args <- fmap (drop 1) getArgs
let n = if null args then 100 else read (head args)
(results, passed) <- liftM unzip $ mapM (\(s,a) -> printf "%-25s: " s >> a n) tests
printf "Passed %d tests!\n" (sum passed)
@@ -941,6 +940,7 @@ instance Arbitrary EmptyStackSet where
l <- arbitrary
-- there cannot be more screens than workspaces:
return . EmptyStackSet . new l ns $ take (min (length ns) (length sds)) sds
+ coarbitrary = error "coarbitrary EmptyStackSet"
-- | Generates a value that satisfies a predicate.
suchThat :: Gen a -> (a -> Bool) -> Gen a
diff --git a/xmonad.cabal b/xmonad.cabal
index d727cf1..addd56f 100644
--- a/xmonad.cabal
+++ b/xmonad.cabal
@@ -23,11 +23,11 @@ extra-source-files: README TODO CONFIG STYLE tests/loc.hs tests/Properties.hs
cabal-version: >= 1.2
flag small_base
- description: Choose the new smaller, split-up base package.
+ description: Choose the new smaller, split-up base package.
flag testing
- description: Testing mode, only build minimal components
- default: False
+ description: Testing mode, only build minimal components
+ default: False
library
exposed-modules: XMonad
@@ -48,6 +48,7 @@ library
ghc-options: -funbox-strict-fields -Wall -optl-Wl,-s
ghc-prof-options: -prof -auto-all
extensions: CPP
+
if flag(testing)
buildable: False
@@ -59,5 +60,11 @@ executable xmonad
ghc-options: -funbox-strict-fields -Wall -optl-Wl,-s
ghc-prof-options: -prof -auto-all
extensions: CPP
+
if flag(testing)
- ghc-options: -Werror
+ cpp-options: -DTESTING
+ hs-source-dirs: . tests/
+ build-depends: QuickCheck
+ ghc-options: -Werror
+ if flag(testing) && flag(small_base)
+ build-depends: random