succinct-0.0.0.1: components/succinct-core/test/Test/Common.hs
module Test.Common where
import Control.Exception
import Control.Monad.IO.Class
import Data.List (isSuffixOf)
import Hedgehog
import qualified System.Directory as IO
import qualified System.IO.Unsafe as IO
corpusFiles :: [FilePath]
corpusFiles = IO.unsafePerformIO $ do
entries <- IO.getDirectoryContents "components/succinct-core/data"
let files = ("components/succinct-core/data/" ++) <$> (".ib" `isSuffixOf`) `filter` entries
return files
{-# NOINLINE corpusFiles #-}
ioFailOnException :: a -> IO (Either String a)
ioFailOnException a = do
catch (Right <$> evaluate a) handler
where handler (e :: SomeException) = return (Left (show e))
safely :: a -> PropertyT IO a
safely a = do
result <- liftIO $ ioFailOnException a
case result of
Right b -> return b
Left msg -> do
annotate msg
failure