{-# LANGUAGE OverloadedStrings #-}

module Test.Syd.PathSpec (spec) where

import qualified Data.ByteString as SB
import Path
import Path.IO
import Test.Syd
import Test.Syd.Path

spec :: Spec
spec = do
  describe "tempDirSpec" $
    tempDirSpec "sydtest-path" $ do
      it "can write a file to a temporary dir and read it" $ \tdir -> do
        tempFile <- resolveFile tdir "tempfile.dat"
        SB.writeFile (fromAbsFile tempFile) "hello"
        contents <- SB.readFile (fromAbsFile tempFile)
        contents `shouldBe` "hello"
      describe "clean state" $
        doNotRandomiseExecutionOrder $ do
          it "can write a file to a temporary dir" $ \tdir -> do
            tempFile <- resolveFile tdir "tempfile.dat"
            SB.writeFile (fromAbsFile tempFile) "hello"
          it "cannot read a file that hasn't been written" $ \tdir -> do
            tempFile <- resolveFile tdir "tempfile.dat"
            contents <- forgivingAbsence $ SB.readFile (fromAbsFile tempFile)
            contents `shouldBe` Nothing

# LANGUAGE OverloadedStrings #

module Test.Syd.PathSpec (spec) where

import qualified Data.ByteString as SB
import Path
import Path.IO
import Test.Syd
import Test.Syd.Path

spec :: Spec
spec = do
  describe "tempDirSpec" $
    tempDirSpec "sydtest-path" $ do
      it "can write a file to a temporary dir and read it" $ \tdir -> do
        tempFile <- resolveFile tdir "tempfile.dat"
        SB.writeFile (fromAbsFile tempFile) "hello"
        contents <- SB.readFile (fromAbsFile tempFile)
        contents `shouldBe` "hello"
      describe "clean state" $
        doNotRandomiseExecutionOrder $ do
          it "can write a file to a temporary dir" $ \tdir -> do
            tempFile <- resolveFile tdir "tempfile.dat"
            SB.writeFile (fromAbsFile tempFile) "hello"
          it "cannot read a file that hasn't been written" $ \tdir -> do
            tempFile <- resolveFile tdir "tempfile.dat"
            contents <- forgivingAbsence $ SB.readFile (fromAbsFile tempFile)
            contents `shouldBe` Nothing
