27 lines
811 B
Haskell
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
|