Add UnitIO
monad and thread-safe golden testing via MonadBaseControl
#83
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR introduces two key features aimed at improving the expressiveness and safety of unit testing in the hedgehog-extras library:
New
UnitIO
MonadA new
UnitIO
monad has been added underHedgehog.Extras.Test.Unit
. This is a wrapper aroundTestT (ResourceT IO)
with support for:MonadTest
,MonadBaseControl IO
,MonadIO
,MonadResource
,MonadCatch
, and more.Integration with Tasty via the
Tasty
type class.Convenient usage in unit tests that require resource management and assertions.
A corresponding
UnitSpec
demonstrates example usage withbracket_
semantics.Thread-Safe Golden File Support
Golden file operations (
diffVsGoldenFile
,diffFileVsGoldenFile
) are now thread-safe:A semaphore per canonicalised path is used to protect golden tests from concurrently writing to the same golden files. This allows multiple tests to share the same golden file.
New golden test function
New
diffVsGoldenFileExcludeTrace
function which excludes stack traces when comparing golden output, improving the stability of golden tests for error messages with non-deterministic trace content.Miscellaneous
Re-exported the
Golden
module fromHedgehog.Extras.Test
for easier accessThis change lays the foundation for more robust and expressive unit testing, while resolving race conditions in golden file testing.