packages feed

sydtest-0.2.0.0: src/Test/Syd/Path.hs

module Test.Syd.Path where

import Data.ByteString (ByteString)
import qualified Data.ByteString as SB
import Path
import Path.IO
import System.IO
import Test.Syd.Def.SetupFunc
import Test.Syd.Def.TestDefM

-- | A test suite that has access to a temporary directory
tempDirSpec ::
  -- | Temporary directory name template
  String ->
  TestDefM outers (Path Abs Dir) result ->
  TestDefM outers () result
tempDirSpec template = setupAround $ tempDirSetupFunc template

-- | Setup function for a temporary directory
tempDirSetupFunc ::
  -- | Temporary directory name template
  String ->
  SetupFunc (Path Abs Dir)
tempDirSetupFunc template = SetupFunc $ withSystemTempDir template

tempBinaryFileWithContentsSetupFunc ::
  -- | Temporary directory name template
  String ->
  ByteString ->
  SetupFunc (Path Abs File)
tempBinaryFileWithContentsSetupFunc template contents = SetupFunc $ \func ->
  withSystemTempFile
    template
    ( \af h -> do
        SB.hPut h contents
        hFlush h
        hClose h
        func af
    )