From 2319cc88cf8b1616cae77dd4319d8c86873579f1 Mon Sep 17 00:00:00 2001 From: Spencer Janssen Date: Sat, 19 Jan 2008 10:12:15 +0100 Subject: Roll testing into the main executable, use Cabal to build the tests darcs-hash:20080119091215-a5988-8f5f48e8c40a0f39abdf6ffe4d4dc938ab8c7ef1 --- Main.hs | 7 +++++++ tests/Main.hs | 8 -------- tests/Properties.hs | 6 +++--- xmonad.cabal | 15 +++++++++++---- 4 files changed, 21 insertions(+), 15 deletions(-) delete mode 100644 tests/Main.hs 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 -- cgit v1.2.3