effectful-zoo-0.0.0.1: components/hedgehog/Effectful/Zoo/Hedgehog/Api/Run.hs
module Effectful.Zoo.Hedgehog.Api.Run
( UnitTest,
hedgehog,
unitTest,
) where
import Control.Monad.Trans.Writer.Lazy qualified as MTL
import Effectful
import Effectful.Error.Static
import Effectful.Writer.Static.Local
import Effectful.Zoo.Hedgehog.Api.Journal
import Effectful.Zoo.Hedgehog.Dynamic
import Effectful.Zoo.Log.Dynamic
import HaskellWorks.Prelude
import Hedgehog (TestT)
import Hedgehog qualified as H
import Hedgehog.Internal.Property (Failure, Journal)
import Hedgehog.Internal.Property qualified as H
import Test.Tasty (TestName, TestTree)
import Test.Tasty.Hedgehog (testProperty)
type UnitTest = TestT IO ()
hedgehog :: forall a. ()
=> Eff
[ Log Text
, Hedgehog
, Error Failure
, Writer Journal
, IOE
] a
-> H.TestT IO a
hedgehog f =
f
& runLog (ConcUnlift Persistent Unlimited) jotLogTextWithCallStack
& runHedgehogIO
& MTL.WriterT
& ExceptT
& H.TestT
unitTest :: ()
=> TestName
-> UnitTest
-> TestTree
unitTest desc =
testProperty desc . H.withTests 1 . H.property . H.test