hw-polysemy 0.2.1.0 → 0.2.2.0
raw patch · 4 files changed
+20/−16 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- HaskellWorks.Polysemy.Hedgehog: eval :: forall r_amDc a_amqw. (Member Hedgehog r_amDc, HasCallStack) => a_amqw -> Sem r_amDc a_amqw
+ HaskellWorks.Polysemy.Hedgehog: eval :: forall r_amDd a_amqx. (Member Hedgehog r_amDd, HasCallStack) => a_amqx -> Sem r_amDd a_amqx
- HaskellWorks.Polysemy.Hedgehog: evalIO :: forall r_amDg a_amqA. (Member Hedgehog r_amDg, HasCallStack) => IO a_amqA -> Sem r_amDg a_amqA
+ HaskellWorks.Polysemy.Hedgehog: evalIO :: forall r_amDh a_amqB. (Member Hedgehog r_amDh, HasCallStack) => IO a_amqB -> Sem r_amDh a_amqB
- HaskellWorks.Polysemy.Hedgehog: evalM :: forall r_amDe a_amqz. (Member Hedgehog r_amDe, HasCallStack) => Sem r_amDe a_amqz -> Sem r_amDe a_amqz
+ HaskellWorks.Polysemy.Hedgehog: evalM :: forall r_amDf a_amqA. (Member Hedgehog r_amDf, HasCallStack) => Sem r_amDf a_amqA -> Sem r_amDf a_amqA
- HaskellWorks.Polysemy.Hedgehog.Assert: evalIO :: forall r_amDg a_amqA. (Member Hedgehog r_amDg, HasCallStack) => IO a_amqA -> Sem r_amDg a_amqA
+ HaskellWorks.Polysemy.Hedgehog.Assert: evalIO :: forall r_amDh a_amqB. (Member Hedgehog r_amDh, HasCallStack) => IO a_amqB -> Sem r_amDh a_amqB
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: assertEquals :: forall r_amD9 a_X0. (Member Hedgehog r_amD9, HasCallStack, Eq a_X0, Show a_X0) => a_X0 -> a_X0 -> Sem r_amD9 ()
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: assertEquals :: forall r_amDa a_X0. (Member Hedgehog r_amDa, HasCallStack, Eq a_X0, Show a_X0) => a_X0 -> a_X0 -> Sem r_amDa ()
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: eval :: forall r_amDc a_amqw. (Member Hedgehog r_amDc, HasCallStack) => a_amqw -> Sem r_amDc a_amqw
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: eval :: forall r_amDd a_amqx. (Member Hedgehog r_amDd, HasCallStack) => a_amqx -> Sem r_amDd a_amqx
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: evalIO :: forall r_amDg a_amqA. (Member Hedgehog r_amDg, HasCallStack) => IO a_amqA -> Sem r_amDg a_amqA
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: evalIO :: forall r_amDh a_amqB. (Member Hedgehog r_amDh, HasCallStack) => IO a_amqB -> Sem r_amDh a_amqB
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: evalM :: forall r_amDe a_amqz. (Member Hedgehog r_amDe, HasCallStack) => Sem r_amDe a_amqz -> Sem r_amDe a_amqz
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: evalM :: forall r_amDf a_amqA. (Member Hedgehog r_amDf, HasCallStack) => Sem r_amDf a_amqA -> Sem r_amDf a_amqA
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: failWith :: forall r_amDk a_amqE. (Member Hedgehog r_amDk, HasCallStack) => Maybe Diff -> String -> Sem r_amDk a_amqE
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: failWith :: forall r_amDl a_amqF. (Member Hedgehog r_amDl, HasCallStack) => Maybe Diff -> String -> Sem r_amDl a_amqF
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: failWithCustom :: forall r_amDn a_amqG. Member Hedgehog r_amDn => CallStack -> Maybe Diff -> String -> Sem r_amDn a_amqG
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: failWithCustom :: forall r_amDo a_amqH. Member Hedgehog r_amDo => CallStack -> Maybe Diff -> String -> Sem r_amDo a_amqH
- HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: writeLog :: forall r_amDi. Member Hedgehog r_amDi => Log -> Sem r_amDi ()
+ HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog: writeLog :: forall r_amDj. Member Hedgehog r_amDj => Log -> Sem r_amDj ()
- HaskellWorks.Polysemy.Hedgehog.Eval: eval :: forall r_amDc a_amqw. (Member Hedgehog r_amDc, HasCallStack) => a_amqw -> Sem r_amDc a_amqw
+ HaskellWorks.Polysemy.Hedgehog.Eval: eval :: forall r_amDd a_amqx. (Member Hedgehog r_amDd, HasCallStack) => a_amqx -> Sem r_amDd a_amqx
- HaskellWorks.Polysemy.Hedgehog.Eval: evalIO :: forall r_amDg a_amqA. (Member Hedgehog r_amDg, HasCallStack) => IO a_amqA -> Sem r_amDg a_amqA
+ HaskellWorks.Polysemy.Hedgehog.Eval: evalIO :: forall r_amDh a_amqB. (Member Hedgehog r_amDh, HasCallStack) => IO a_amqB -> Sem r_amDh a_amqB
- HaskellWorks.Polysemy.Hedgehog.Eval: evalM :: forall r_amDe a_amqz. (Member Hedgehog r_amDe, HasCallStack) => Sem r_amDe a_amqz -> Sem r_amDe a_amqz
+ HaskellWorks.Polysemy.Hedgehog.Eval: evalM :: forall r_amDf a_amqA. (Member Hedgehog r_amDf, HasCallStack) => Sem r_amDf a_amqA -> Sem r_amDf a_amqA
Files
- core/HaskellWorks/Polysemy/Error.hs +10/−0
- hedgehog/HaskellWorks/Polysemy/Hedgehog/Assert.hs +1/−9
- hedgehog/HaskellWorks/Polysemy/Hedgehog/Golden.hs +8/−6
- hw-polysemy.cabal +1/−1
core/HaskellWorks/Polysemy/Error.hs view
@@ -3,9 +3,12 @@ , onNothing , onLeftM , onNothingM+ , trap ) where import HaskellWorks.Polysemy.Prelude+import Polysemy+import Polysemy.Error onLeft :: Monad m => (e -> m a) -> Either e a -> m a onLeft f = either f pure@@ -18,3 +21,10 @@ onNothingM :: Monad m => m b -> m (Maybe b) -> m b onNothingM h f = onNothing h =<< f++trap :: forall e r a. ()+ => (e -> Sem r a)+ -> Sem (Error e ': r) a+ -> Sem r a+trap h f =+ runError f >>= either h pure
hedgehog/HaskellWorks/Polysemy/Hedgehog/Assert.hs view
@@ -33,6 +33,7 @@ import Data.Generics.Product.Any import qualified Data.List as L import qualified GHC.Stack as GHC+import HaskellWorks.Polysemy.Error import HaskellWorks.Polysemy.File import HaskellWorks.Polysemy.Hedgehog.Effect.Hedgehog import HaskellWorks.Polysemy.Prelude@@ -144,15 +145,6 @@ -> Sem r Pid assertPidOk hProcess = withFrozenCallStack $ nothingFailM $ getPid hProcess--trap :: forall e r a. ()- => (e -> Sem r a)- -> Sem (Error e ': r) a- -> Sem r a-trap h f =- runError f >>= \case- Left e -> h e- Right a -> pure a -- | Assert the 'filePath' can be parsed as JSON. assertIsJsonFile_ :: ()
hedgehog/HaskellWorks/Polysemy/Hedgehog/Golden.hs view
@@ -23,7 +23,6 @@ import qualified Control.Concurrent.QSem as IO import qualified Data.List as List-import qualified GHC.Stack as GHC import qualified HaskellWorks.Polysemy.Control.Concurrent.QSem as PIO import HaskellWorks.Polysemy.Prelude import HaskellWorks.Polysemy.System.Directory as PIO@@ -57,6 +56,7 @@ return $ value == Just "1" writeGoldenFile :: ()+ => HasCallStack => Member Hedgehog r => Member (Embed IO) r => Member (Error IOException) r@@ -64,19 +64,20 @@ => FilePath -> String -> Sem r ()-writeGoldenFile goldenFile actualContent = do+writeGoldenFile goldenFile actualContent = withFrozenCallStack $ do jot_ $ "Creating golden file " <> goldenFile PIO.createDirectoryIfMissing True (takeDirectory goldenFile) PIO.writeFile goldenFile actualContent reportGoldenFileMissing :: ()+ => HasCallStack => Member Hedgehog r => Member (Embed IO) r => Member (Error IOException) r => Member Log r => FilePath -> Sem r ()-reportGoldenFileMissing goldenFile = do+reportGoldenFileMissing goldenFile = withFrozenCallStack $ do jot_ $ unlines [ "Golden file " <> goldenFile <> " does not exist." , "To create it, run with CREATE_GOLDEN_FILES=1."@@ -85,6 +86,7 @@ failure checkAgainstGoldenFile :: ()+ => HasCallStack => Member Hedgehog r => Member (Embed IO) r => Member (Error IOException) r@@ -92,7 +94,7 @@ => FilePath -> [String] -> Sem r ()-checkAgainstGoldenFile goldenFile actualLines = do+checkAgainstGoldenFile goldenFile actualLines = withFrozenCallStack $ do referenceLines <- List.lines <$> PIO.readFile goldenFile let difference = getGroupedDiff actualLines referenceLines case difference of@@ -130,7 +132,7 @@ => String -- ^ Actual content -> FilePath -- ^ Reference file -> Sem r ()-diffVsGoldenFile actualContent goldenFile = GHC.withFrozenCallStack $ do+diffVsGoldenFile actualContent goldenFile = withFrozenCallStack $ do forM_ mGoldenFileLogFile $ \logFile -> PIO.bracketQSem sem $ PIO.appendFile logFile $ goldenFile <> "\n" @@ -166,6 +168,6 @@ => FilePath -- ^ Actual file -> FilePath -- ^ Reference file -> Sem r ()-diffFileVsGoldenFile actualFile referenceFile = GHC.withFrozenCallStack $ do+diffFileVsGoldenFile actualFile referenceFile = withFrozenCallStack $ do contents <- PIO.readFile actualFile diffVsGoldenFile contents referenceFile
hw-polysemy.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.4 name: hw-polysemy-version: 0.2.1.0+version: 0.2.2.0 synopsis: Opinionated polysemy library description: Opinionated polysemy library. license: Apache-2.0