packages feed

hedgehog-extras 0.4.5.1 → 0.4.5.2

raw patch · 2 files changed

+29/−5 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

hedgehog-extras.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.4  name:                   hedgehog-extras-version:                0.4.5.1+version:                0.4.5.2 synopsis:               Supplemental library for hedgehog description:            Supplemental library for hedgehog. category:               Test
src/Hedgehog/Extras/Test/Golden.hs view
@@ -4,6 +4,7 @@   ) where  import           Control.Applicative+import           Control.Exception (bracket_) import           Control.Monad import           Control.Monad.IO.Class (MonadIO (liftIO)) import           Data.Algorithm.Diff (PolyDiff (Both), getGroupedDiff)@@ -18,16 +19,30 @@ import           Hedgehog (MonadTest) import           Hedgehog.Extras.Test.Base (failMessage) import           System.FilePath (takeDirectory)-import           System.IO (FilePath)+import           System.IO (FilePath, IO) +import qualified Control.Concurrent.QSem as IO import qualified Data.List as List import qualified GHC.Stack as GHC import qualified Hedgehog.Extras.Test as H import qualified Hedgehog.Internal.Property as H import qualified System.Directory as IO import qualified System.Environment as IO+import qualified System.IO as IO import qualified System.IO.Unsafe as IO +sem :: IO.QSem+sem = IO.unsafePerformIO $ IO.newQSem 1+{-# NOINLINE sem #-}++semBracket :: IO a -> IO a+semBracket = bracket_ (IO.waitQSem sem) (IO.signalQSem sem)++-- | The file to log whenever a golden file is referenced.+mGoldenFileLogFile :: Maybe FilePath+mGoldenFileLogFile = IO.unsafePerformIO $+  IO.lookupEnv "GOLDEN_FILE_LOG_FILE"+ -- | Whether the test should create the golden files if the file does ont exist. createFiles :: Bool createFiles = IO.unsafePerformIO $ do@@ -35,7 +50,9 @@   return $ value == Just "1"  -- | Diff contents against the golden file.  If CREATE_GOLDEN_FILES environment is--- set to "1", then should the gold file not exist it would be created.+-- set to "1", then should the gold file not exist it would be created.  If+-- GOLDEN_FILE_LOG_FILE is set to a filename, then the golden file path will be+-- logged to the specified file. -- -- Set the environment variable when you intend to generate or re-generate the golden -- file for example when running the test for the first time or if the golden file@@ -53,6 +70,9 @@   -> FilePath -- ^ Reference file   -> m () diffVsGoldenFile actualContent referenceFile = GHC.withFrozenCallStack $ do+  forM_ mGoldenFileLogFile $ \logFile ->+    liftIO $ semBracket $ IO.appendFile logFile $ referenceFile <> "\n"+   fileExists <- liftIO $ IO.doesFileExist referenceFile    if fileExists@@ -62,7 +82,9 @@       case difference of         []       -> pure ()         [Both{}] -> pure ()-        _        -> failMessage callStack $ ppDiff difference+        _        -> do+          H.note_ $ "Golden test failed against golden file: " <> referenceFile+          failMessage callStack $ ppDiff difference     else if createFiles       then do         -- CREATE_GOLDEN_FILES is set, so we create any golden files that don't@@ -80,7 +102,9 @@     actualLines = List.lines actualContent  -- | Diff file against the golden file.  If CREATE_GOLDEN_FILES environment is--- set to "1", then should the gold file not exist it would be created.+-- set to "1", then should the gold file not exist it would be created.  If+-- GOLDEN_FILE_LOG_FILE is set to a filename, then the golden file path will be+-- logged to the specified file. -- -- Set the environment variable when you intend to generate or re-generate the golden -- file for example when running the test for the first time or if the golden file