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