packages feed

turtle-1.5.15: test/cptree.hs

{-# LANGUAGE OverloadedStrings #-}

import Turtle
import Filesystem.Path.CurrentOS ()
import System.IO.Temp (withSystemTempDirectory)
import qualified Control.Monad.Fail as Fail
import Control.Monad (unless)

check :: String -> Bool-> IO ()
check errorMessage successs = unless successs $ Fail.fail errorMessage

main :: IO ()
main = withSystemTempDirectory "tempDir" (runTest . fromString)

runTest :: Turtle.FilePath -> IO ()
runTest tempDir = do
  let srcDirectory = tempDir </> "src"

  mktree $ srcDirectory </> "directory"
  touch $ srcDirectory </> "directory" </> "file"

  let destDirectory = tempDir </> "dest"

  cptree srcDirectory destDirectory

  testdir (destDirectory </> "directory") >>= check "cptree did not preserve directory"
  testfile (destDirectory </> "directory" </> "file") >>= check "cptree did not preserve directory"