Split kind tests into component-owned probes

This commit is contained in:
ms2k 2026-07-19 23:57:21 +09:00
commit 691ad92e30

View file

@ -0,0 +1,27 @@
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