polysemy-test-0.3.1.1: lib/Polysemy/Test/Data/Test.hs
{-# options_haddock hide #-}
module Polysemy.Test.Data.Test where
import Path (Abs, Dir, File, Path, Rel)
import Polysemy (makeSem_)
-- |Operations for interacting with fixtures and temp files in a test.
data Test :: Effect where
TestDir :: Test m (Path Abs Dir)
TempDir :: Path Rel Dir -> Test m (Path Abs Dir)
TempFile :: [Text] -> Path Rel File -> Test m (Path Abs File)
TempFileContent :: Path Rel File -> Test m Text
FixturePath :: Path Rel p -> Test m (Path Abs p)
Fixture :: Path Rel File -> Test m Text
makeSem_ ''Test
-- |Return the base dir in which tests are executed.
testDir ::
∀ r .
Member Test r =>
Sem r (Path Abs Dir)
-- |Create a subdirectory of the directory for temporary files and return its absolute path.
tempDir ::
∀ r .
Member Test r =>
Path Rel Dir ->
Sem r (Path Abs Dir)
-- |Write the specified lines of 'Text' to a file under the temp dir and return its absolute path.
tempFile ::
∀ r .
Member Test r =>
[Text] ->
Path Rel File ->
Sem r (Path Abs File)
-- |Read the contents of a temporary file.
tempFileContent ::
∀ r .
Member Test r =>
Path Rel File ->
Sem r Text
-- |Construct a path relative to the fixture directory.
fixturePath ::
∀ p r .
Member Test r =>
Path Rel p ->
Sem r (Path Abs p)
-- |Read the contents of a file relative to the fixture directory.
fixture ::
∀ r .
Member Test r =>
Path Rel File ->
Sem r Text