packages feed

hw-polysemy 0.2.4.2 → 0.2.5.0

raw patch · 7 files changed

+108/−16 lines, 7 filesdep +exceptionsPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: exceptions

API changes (from Hackage documentation)

- HaskellWorks.Polysemy.Hedgehog: hedgehogToIntegrationFinal :: () => Member (Final (PropertyT IO)) r => Sem (Hedgehog ': r) a -> Sem r a
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: hedgehogToIntegrationFinal :: () => Member (Final (PropertyT IO)) r => Sem (Hedgehog ': r) a -> Sem r a
+ HaskellWorks.Polysemy.Hedgehog: hedgehogToPropertyFinal :: () => Member (Final (PropertyT IO)) r => Sem (Hedgehog ': r) a -> Sem r a
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: hedgehogToMonadTestFinal :: () => MonadIO m => MonadCatch m => MonadTest m => Member (Final m) r => Sem (Hedgehog ': r) a -> Sem r a
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: hedgehogToPropertyFinal :: () => Member (Final (PropertyT IO)) r => Sem (Hedgehog ': r) a -> Sem r a
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: hedgehogToTestFinal :: () => Member (Final (TestT IO)) r => Sem (Hedgehog ': r) a -> Sem r a
+ HaskellWorks.Polysemy.Hedgehog.Test: data () => Property
+ HaskellWorks.Polysemy.Hedgehog.Test: test :: () => Sem [Log, DataLog (LogEntry LogMessage), DataLog Text, GhcTime, Hedgehog, Embed IO, Embed (TestT IO), Resource, Final (TestT IO)] () -> Property
- HaskellWorks.Polysemy.Hedgehog: eval :: forall r_amJK a_amx4. (Member Hedgehog r_amJK, HasCallStack) => a_amx4 -> Sem r_amJK a_amx4
+ HaskellWorks.Polysemy.Hedgehog: eval :: forall r_amPm a_amCG. (Member Hedgehog r_amPm, HasCallStack) => a_amCG -> Sem r_amPm a_amCG
- HaskellWorks.Polysemy.Hedgehog: evalIO :: forall r_amJO a_amx8. (Member Hedgehog r_amJO, HasCallStack) => IO a_amx8 -> Sem r_amJO a_amx8
+ HaskellWorks.Polysemy.Hedgehog: evalIO :: forall r_amPq a_amCK. (Member Hedgehog r_amPq, HasCallStack) => IO a_amCK -> Sem r_amPq a_amCK
- HaskellWorks.Polysemy.Hedgehog: evalM :: forall r_amJM a_amx7. (Member Hedgehog r_amJM, HasCallStack) => Sem r_amJM a_amx7 -> Sem r_amJM a_amx7
+ HaskellWorks.Polysemy.Hedgehog: evalM :: forall r_amPo a_amCJ. (Member Hedgehog r_amPo, HasCallStack) => Sem r_amPo a_amCJ -> Sem r_amPo a_amCJ
- HaskellWorks.Polysemy.Hedgehog: failWith :: forall r_amJS a_amxc. (Member Hedgehog r_amJS, HasCallStack) => Maybe Diff -> String -> Sem r_amJS a_amxc
+ HaskellWorks.Polysemy.Hedgehog: failWith :: forall r_amPu a_amCO. (Member Hedgehog r_amPu, HasCallStack) => Maybe Diff -> String -> Sem r_amPu a_amCO
- HaskellWorks.Polysemy.Hedgehog: failWithCustom :: forall r_amJV a_amxe. Member Hedgehog r_amJV => CallStack -> Maybe Diff -> String -> Sem r_amJV a_amxe
+ HaskellWorks.Polysemy.Hedgehog: failWithCustom :: forall r_amPx a_amCQ. Member Hedgehog r_amPx => CallStack -> Maybe Diff -> String -> Sem r_amPx a_amCQ
- HaskellWorks.Polysemy.Hedgehog: propertyOnce :: () => Sem [Log, DataLog (LogEntry LogMessage), DataLog Text, GhcTime, Hedgehog, Embed IO, Embed (PropertyT IO), Final (PropertyT IO)] () -> Property
+ HaskellWorks.Polysemy.Hedgehog: propertyOnce :: () => Sem [Log, DataLog (LogEntry LogMessage), DataLog Text, GhcTime, Hedgehog, Embed IO, Embed (PropertyT IO), Resource, Final (PropertyT IO)] () -> Property
- HaskellWorks.Polysemy.Hedgehog: writeLog :: forall r_amJQ. Member Hedgehog r_amJQ => Log -> Sem r_amJQ ()
+ HaskellWorks.Polysemy.Hedgehog: writeLog :: forall r_amPs. Member Hedgehog r_amPs => Log -> Sem r_amPs ()
- HaskellWorks.Polysemy.Hedgehog.Assert: evalIO :: forall r_amJO a_amx8. (Member Hedgehog r_amJO, HasCallStack) => IO a_amx8 -> Sem r_amJO a_amx8
+ HaskellWorks.Polysemy.Hedgehog.Assert: evalIO :: forall r_amPq a_amCK. (Member Hedgehog r_amPq, HasCallStack) => IO a_amCK -> Sem r_amPq a_amCK
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: assertEquals :: forall r_amJH a_X0. (Member Hedgehog r_amJH, HasCallStack, Eq a_X0, Show a_X0) => a_X0 -> a_X0 -> Sem r_amJH ()
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: assertEquals :: forall r_amPj a_X0. (Member Hedgehog r_amPj, HasCallStack, Eq a_X0, Show a_X0) => a_X0 -> a_X0 -> Sem r_amPj ()
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: eval :: forall r_amJK a_amx4. (Member Hedgehog r_amJK, HasCallStack) => a_amx4 -> Sem r_amJK a_amx4
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: eval :: forall r_amPm a_amCG. (Member Hedgehog r_amPm, HasCallStack) => a_amCG -> Sem r_amPm a_amCG
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: evalIO :: forall r_amJO a_amx8. (Member Hedgehog r_amJO, HasCallStack) => IO a_amx8 -> Sem r_amJO a_amx8
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: evalIO :: forall r_amPq a_amCK. (Member Hedgehog r_amPq, HasCallStack) => IO a_amCK -> Sem r_amPq a_amCK
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: evalM :: forall r_amJM a_amx7. (Member Hedgehog r_amJM, HasCallStack) => Sem r_amJM a_amx7 -> Sem r_amJM a_amx7
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: evalM :: forall r_amPo a_amCJ. (Member Hedgehog r_amPo, HasCallStack) => Sem r_amPo a_amCJ -> Sem r_amPo a_amCJ
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: failWith :: forall r_amJS a_amxc. (Member Hedgehog r_amJS, HasCallStack) => Maybe Diff -> String -> Sem r_amJS a_amxc
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: failWith :: forall r_amPu a_amCO. (Member Hedgehog r_amPu, HasCallStack) => Maybe Diff -> String -> Sem r_amPu a_amCO
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: failWithCustom :: forall r_amJV a_amxe. Member Hedgehog r_amJV => CallStack -> Maybe Diff -> String -> Sem r_amJV a_amxe
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: failWithCustom :: forall r_amPx a_amCQ. Member Hedgehog r_amPx => CallStack -> Maybe Diff -> String -> Sem r_amPx a_amCQ
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: writeLog :: forall r_amJQ. Member Hedgehog r_amJQ => Log -> Sem r_amJQ ()
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: writeLog :: forall r_amPs. Member Hedgehog r_amPs => Log -> Sem r_amPs ()
- HaskellWorks.Polysemy.Hedgehog.Eval: eval :: forall r_amJK a_amx4. (Member Hedgehog r_amJK, HasCallStack) => a_amx4 -> Sem r_amJK a_amx4
+ HaskellWorks.Polysemy.Hedgehog.Eval: eval :: forall r_amPm a_amCG. (Member Hedgehog r_amPm, HasCallStack) => a_amCG -> Sem r_amPm a_amCG
- HaskellWorks.Polysemy.Hedgehog.Eval: evalIO :: forall r_amJO a_amx8. (Member Hedgehog r_amJO, HasCallStack) => IO a_amx8 -> Sem r_amJO a_amx8
+ HaskellWorks.Polysemy.Hedgehog.Eval: evalIO :: forall r_amPq a_amCK. (Member Hedgehog r_amPq, HasCallStack) => IO a_amCK -> Sem r_amPq a_amCK
- HaskellWorks.Polysemy.Hedgehog.Eval: evalM :: forall r_amJM a_amx7. (Member Hedgehog r_amJM, HasCallStack) => Sem r_amJM a_amx7 -> Sem r_amJM a_amx7
+ HaskellWorks.Polysemy.Hedgehog.Eval: evalM :: forall r_amPo a_amCJ. (Member Hedgehog r_amPo, HasCallStack) => Sem r_amPo a_amCJ -> Sem r_amPo a_amCJ
- HaskellWorks.Polysemy.Hedgehog.Property: propertyOnce :: () => Sem [Log, DataLog (LogEntry LogMessage), DataLog Text, GhcTime, Hedgehog, Embed IO, Embed (PropertyT IO), Final (PropertyT IO)] () -> Property
+ HaskellWorks.Polysemy.Hedgehog.Property: propertyOnce :: () => Sem [Log, DataLog (LogEntry LogMessage), DataLog Text, GhcTime, Hedgehog, Embed IO, Embed (PropertyT IO), Resource, Final (PropertyT IO)] () -> Property

Files

core/HaskellWorks/Polysemy/System/IO.hs view
@@ -1,12 +1,12 @@ module HaskellWorks.Polysemy.System.IO-  ( IO.BufferMode,+  ( IO.BufferMode(..),     IO.FilePath,     IO.Handle,     IO.HandlePosn,     IO.IO,-    IO.IOMode,-    IO.NewlineMode,-    IO.SeekMode,+    IO.IOMode(..),+    IO.NewlineMode(..),+    IO.SeekMode(..),     IO.TextEncoding,      String,
hedgehog/HaskellWorks/Polysemy/Hedgehog.hs view
@@ -4,7 +4,7 @@      Hedgehog, -    hedgehogToIntegrationFinal,+    hedgehogToPropertyFinal,     interpretDataLogHedgehog,      leftFail,
hedgehog/HaskellWorks/Polysemy/Hedgehog/Effect/Hedgehog.hs view
@@ -12,7 +12,9 @@   , failWith   , failWithCustom -  , hedgehogToIntegrationFinal+  , hedgehogToMonadTestFinal+  , hedgehogToPropertyFinal+  , hedgehogToTestFinal    ) where @@ -22,6 +24,8 @@ import qualified Hedgehog                                                as H import qualified Hedgehog.Internal.Property                              as H +import qualified Control.Monad.Catch                                     as IO+import qualified Control.Monad.IO.Class                                  as IO import qualified HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog.Internal as I import           Polysemy import           Polysemy.Final@@ -61,11 +65,14 @@  makeSem ''Hedgehog -hedgehogToIntegrationFinal :: ()-  => Member (Final (H.PropertyT IO)) r+hedgehogToMonadTestFinal :: ()+  => IO.MonadIO m+  => IO.MonadCatch m+  => H.MonadTest m+  => Member (Final m) r   => Sem (Hedgehog ': r) a   -> Sem r a-hedgehogToIntegrationFinal = interpretFinal \case+hedgehogToMonadTestFinal = interpretFinal \case   AssertEquals a b ->     liftS $ a H.=== b   Eval a ->@@ -81,3 +88,15 @@     liftS $ I.failWithCustom cs mdiff msg   WriteLog logValue ->     liftS $ H.writeLog logValue++hedgehogToPropertyFinal :: ()+  => Member (Final (H.PropertyT IO)) r+  => Sem (Hedgehog ': r) a+  -> Sem r a+hedgehogToPropertyFinal = hedgehogToMonadTestFinal++hedgehogToTestFinal :: ()+  => Member (Final (H.TestT IO)) r+  => Sem (Hedgehog ': r) a+  -> Sem r a+hedgehogToTestFinal = hedgehogToMonadTestFinal
hedgehog/HaskellWorks/Polysemy/Hedgehog/Property.hs view
@@ -16,6 +16,7 @@ import           Polysemy import           Polysemy.Embed import           Polysemy.Log+import           Polysemy.Resource import           Polysemy.Time.Interpreter.Ghc  propertyOnce :: ()@@ -27,6 +28,7 @@         , Hedgehog         , Embed IO         , Embed (H.PropertyT IO)+        , Resource         , Final (H.PropertyT IO)         ] ()   -> H.Property@@ -36,9 +38,10 @@   & interpretDataLogHedgehog formatLogEntry getLogEntryCallStack   & interpretDataLogHedgehog id (const GHC.callStack)   & interpretTimeGhc-  & hedgehogToIntegrationFinal+  & hedgehogToPropertyFinal   & runEmbedded liftIO   & embedToFinal @(H.PropertyT IO)+  & runResource   & runFinal   & H.property   & H.withTests 1
+ hedgehog/HaskellWorks/Polysemy/Hedgehog/Test.hs view
@@ -0,0 +1,48 @@+module HaskellWorks.Polysemy.Hedgehog.Test+  ( Property+  , test++  ) where++import qualified GHC.Stack                                      as GHC+import           HaskellWorks.Polysemy.Prelude++import           Hedgehog                                       (Property)+import qualified Hedgehog                                       as H++import           Control.Monad.IO.Class                         (liftIO)+import           HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog+import           HaskellWorks.Polysemy.Hedgehog.Effect.Log+import           Polysemy+import           Polysemy.Embed+import           Polysemy.Log+import           Polysemy.Resource+import           Polysemy.Time.Interpreter.Ghc++test :: ()+  => Sem+        [ Log+        , DataLog (LogEntry LogMessage)+        , DataLog Text+        , GhcTime+        , Hedgehog+        , Embed IO+        , Embed (H.TestT IO)+        , Resource+        , Final (H.TestT IO)+        ] ()+  -> H.Property+test f = f+  & interpretLogDataLog+  & setLogLevel (Just Info)+  & interpretDataLogHedgehog formatLogEntry getLogEntryCallStack+  & interpretDataLogHedgehog id (const GHC.callStack)+  & interpretTimeGhc+  & hedgehogToTestFinal+  & runEmbedded liftIO+  & embedToFinal @(H.TestT IO)+  & runResource+  & runFinal+  & H.test+  & H.property+  & H.withTests 1
hw-polysemy.cabal view
@@ -1,6 +1,6 @@ cabal-version:          3.4 name:                   hw-polysemy-version:                0.2.4.2+version:                0.2.5.0 synopsis:               Opinionated polysemy library description:            Opinionated polysemy library. license:                Apache-2.0@@ -25,6 +25,7 @@ common contravariant              { build-depends: contravariant                               < 1.6    } common Diff                       { build-depends: Diff                                        < 0.6    } common directory                  { build-depends: directory                                   < 1.4    }+common exceptions                 { build-depends: exceptions                                  < 0.11   } common filepath                   { build-depends: filepath                                    < 1.6    } common generic-lens               { build-depends: generic-lens                                < 2.3    } common ghc-prim                   { build-depends: ghc-prim                                    < 0.12   }@@ -151,6 +152,7 @@                         bytestring,                         contravariant,                         Diff,+                        exceptions,                         filepath,                         generic-lens,                         ghc-prim,@@ -174,6 +176,7 @@                         HaskellWorks.Polysemy.Hedgehog.Process                         HaskellWorks.Polysemy.Hedgehog.Process.Internal                         HaskellWorks.Polysemy.Hedgehog.Property+                        HaskellWorks.Polysemy.Hedgehog.Test                         HaskellWorks.Polysemy.Hedgehog.Workspace                         HaskellWorks.Polysemy.Hedgehog.Workspace.Types   hs-source-dirs:       hedgehog@@ -215,6 +218,7 @@                         HaskellWorks.Polysemy.Hedgehog.Process,                         HaskellWorks.Polysemy.Hedgehog.Process.Internal,                         HaskellWorks.Polysemy.Hedgehog.Property,+                        HaskellWorks.Polysemy.Hedgehog.Test,                         HaskellWorks.Polysemy.Hedgehog.Workspace,                         HaskellWorks.Polysemy.Prelude,                         HaskellWorks.Polysemy.String,
test/HaskellWorks/Polysemy/HedgehogSpec.hs view
@@ -3,19 +3,37 @@ {-# LANGUAGE TypeApplications #-}  module HaskellWorks.Polysemy.HedgehogSpec-  ( hprop_example+  ( hprop_example_property+  , hprop_example_test   ) where  import           HaskellWorks.Polysemy.Prelude -import qualified Data.List                       as L-import qualified HaskellWorks.Polysemy.Data.Text as T+import qualified Data.List                           as L+import qualified HaskellWorks.Polysemy.Data.Text     as T import           HaskellWorks.Polysemy.Hedgehog+import           HaskellWorks.Polysemy.Hedgehog.Test  default (String) -hprop_example :: Property-hprop_example = propertyOnce $ do+hprop_example_property :: Property+hprop_example_property = propertyOnce $ do+  let projectRoot = "."++  contents <- T.readFile (projectRoot </> "LICENSE")+    & trapFail @IOException++  line1 <- T.lines contents+    & L.dropWhile T.null+    & requireHead+    & jotShowM++  let text = T.strip line1++  text === "Apache License"++hprop_example_test :: Property+hprop_example_test = test $ do   let projectRoot = "."    contents <- T.readFile (projectRoot </> "LICENSE")