packages feed

polysemy-test-0.3.1.1: readme.md

# About

This package provides utilities for testing [Polysemy] programs:

* An effect, `Test`, that gives access to temporary files and fixtures
* An effect, `Hedgehog`, for lifted [Hedgehog] assertions

# Example

```haskell
import Path (relfile)
import Polysemy.Test
import Test.Tasty (defaultMain)

test_fixture :: UnitTest
test_fixture =
  runTestAuto do
    fixContent1 <- fixtureLines fixRel
    fixPath <- Test.fixturePath fixRel
    fixContent2 <- Text.lines <$> embed (Text.readFile (toFilePath fixPath))
    fixContent1 === fixContent2
    fixContent1 === ["file", "content"]
  where
    fixRel =
      [relfile|files/file1|]

main :: IO ()
main =
  defaultMain (unitTest test_fixture)
```

# Fixtures

Any file that is located below the subdirectory `fixtures` inside the test
directory can be accessed using the constructors `Test.fixturePath`,
`Test.fixture` and `Text.fixtureLines`.

You can override the path used to look for the `fixtures` directory by using
`runTest` instead of `runTestAuto`.
The latter analyzes the call stack to determine the test directory.

# Temp Files

The constructors `Test.tempDir`, `Test.tempFile`, `Test.tempFileContent` and
`Test.tempFileLines` allow you to create and read files in the `temp` directory
within the test directory.

# Paths

All paths are of type `Path` from the package [path].

You can construct them using the quasiquoters `reldir`, `absdir` etc. or the
functions `parseRelDir`, `parseAbsDir` etc.

[Polysemy]: https://hackage.haskell.org/package/polysemy
[Hedgehog]: https://hackage.haskell.org/package/hedgehog
[path]: https://hackage.haskell.org/package/path