nuthatch/test/Nuthatch/Probe/Assert.hs

27 lines
811 B
Haskell

module Nuthatch.Probe.Assert
( assert
, assertContains
, assertEqual
, requireEnv
) where
import Control.Monad (unless)
import qualified Data.ByteString as BS
import System.Environment (lookupEnv)
assert :: String -> Bool -> IO ()
assert label condition =
unless condition (fail label)
assertContains :: String -> BS.ByteString -> BS.ByteString -> IO ()
assertContains label needle haystack =
assert label (needle `BS.isInfixOf` haystack)
assertEqual :: (Eq value, Show value) => String -> value -> value -> IO ()
assertEqual label expected actual =
unless (actual == expected) $
fail (label <> ": expected " <> show expected <> ", got " <> show actual)
requireEnv :: String -> IO String
requireEnv name =
lookupEnv name >>= maybe (fail ("missing " <> name)) pure