mirror of
https://github.com/xmonad/xmonad.git
synced 2025-07-26 09:41:53 -07:00
Fix test failures on GHC 8 for `abort` and `new_abort` caused by `error` appending the stack trace to the error message (since base 4.9.0.0)[1]. This fixes #36. An alternative is to use `errorWithoutStackTrace` (new in base 4.9.0.0), but this then requires use of CPP for backwards compatibility. Remove type constraints prompting GHC to warn about redundant constraints. Tested with 7.6.3, 7.8.4, 7.10.3, 8.0.1 (all on NixOS). [1] https://hackage.haskell.org/package/base-4.9.0.0/docs/GHC-Stack.html
31 lines
1012 B
Haskell
31 lines
1012 B
Haskell
module Properties.Failure where
|
|
|
|
import XMonad.StackSet hiding (filter)
|
|
|
|
import qualified Control.Exception.Extensible as C
|
|
import System.IO.Unsafe
|
|
import Data.List (isPrefixOf)
|
|
|
|
-- ---------------------------------------------------------------------
|
|
-- testing for failure and help out hpc
|
|
--
|
|
-- Since base 4.9.0.0 `error` appends a stack trace. The tests below
|
|
-- use `isPrefixOf` to only test equality on the error message.
|
|
--
|
|
prop_abort :: Int -> Bool
|
|
prop_abort _ = unsafePerformIO $ C.catch (abort "fail") check
|
|
where
|
|
check (C.SomeException e) =
|
|
return $ "xmonad: StackSet: fail" `isPrefixOf` show e
|
|
|
|
-- new should fail with an abort
|
|
prop_new_abort :: Int -> Bool
|
|
prop_new_abort _ = unsafePerformIO $ C.catch f check
|
|
where
|
|
f = new undefined{-layout-} [] [] `seq` return False
|
|
check (C.SomeException e) =
|
|
return $ "xmonad: StackSet: non-positive argument to StackSet.new" `isPrefixOf` show e
|
|
|
|
-- TODO: Fix this?
|
|
-- prop_view_should_fail = view {- with some bogus data -}
|