hspec-effectful 1.0.0 → 1.0.1
raw patch · 3 files changed
+25/−11 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Effectful.Hspec: parallel :: forall (es :: [Effect]) a. (HasCallStack, Hspec :> es) => Eff es a -> Eff es a
+ Effectful.Hspec: sequential :: forall (es :: [Effect]) a. (HasCallStack, Hspec :> es) => Eff es a -> Eff es a
Files
- CHANGELOG.md +6/−0
- hspec-effectful.cabal +1/−1
- src/Effectful/Hspec.hs +18/−10
CHANGELOG.md view
@@ -5,6 +5,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/). +## [1.0.1] - 2026-07-13++### Added++- `parallel` and `sequential` combinators+ ## [1.0.0] - 2026-07-10 ### Added
hspec-effectful.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: hspec-effectful-version: 1.0.0+version: 1.0.1 synopsis: Effectful driver for Hspec category: Test description:
src/Effectful/Hspec.hs view
@@ -86,6 +86,8 @@ , fspecify , fdescribe , fcontext+ , parallel+ , sequential -- * Setup / Teardown , before_@@ -172,15 +174,18 @@ Hspec{unlift} <- getStaticRep unsafeEff_ . unlift . inject $ action --- | Lifted 'Hspec.describe'-describe :: (HasCallStack, Hspec :> es) => String -> Eff es a -> Eff es a-describe label action =+mapSpec :: (HasCallStack, Hspec :> es) => (Hspec.Spec -> Hspec.Spec) -> Eff es a -> Eff es a+mapSpec f action = stateStaticRepM \before -> do putStaticRep before{spec = pure ()} result <- action after <- getStaticRep- pure (result, before{spec = spec before >> Hspec.describe label (spec after)})+ pure (result, before{spec = spec before >> f (spec after)}) +-- | Lifted 'Hspec.describe'+describe :: (HasCallStack, Hspec :> es) => String -> Eff es a -> Eff es a+describe = mapSpec . Hspec.describe+ -- | Lifted 'Hspec.it' it :: (HasCallStack, Hspec :> es) => String -> Eff es () -> Eff es () it label action = do@@ -226,12 +231,7 @@ -- | Lifted 'Hspec.focus' focus :: (HasCallStack, Hspec :> es) => Eff es a -> Eff es a-focus action =- stateStaticRepM \before -> do- putStaticRep before{spec = pure ()}- result <- action- after <- getStaticRep- pure (result, before{spec = spec before >> Hspec.focus (spec after)})+focus = mapSpec Hspec.focus -- | Lifted 'Hspec.fit' fit :: (HasCallStack, Hspec :> es) => String -> Eff es () -> Eff es ()@@ -248,6 +248,14 @@ -- | Lifted 'Hspec.fcontext' fcontext :: (HasCallStack, Hspec :> es) => String -> Eff es a -> Eff es a fcontext = fdescribe++-- | Lifted 'Hspec.parallel'+parallel :: (HasCallStack, Hspec :> es) => Eff es a -> Eff es a+parallel = mapSpec Hspec.parallel++-- | Lifted 'Hspec.sequential'+sequential :: (HasCallStack, Hspec :> es) => Eff es a -> Eff es a+sequential = mapSpec Hspec.sequential -- | Lifted 'Hspec.before_' before_ :: (HasCallStack, Hspec :> es) => Eff es () -> Eff es a -> Eff es a