From 395621b27a56be6492c81107632339bc67954146 Mon Sep 17 00:00:00 2001 From: Julian Ospald Date: Sun, 29 May 2016 17:29:13 +0200 Subject: [PATCH] Fix tests for sdist We now create the necessary directories and files for the tests on-the-fly. --- hpath.cabal | 16 +-- test/HPath/IO/CanonicalizePathSpec.hs | 43 +++--- .../HPath/IO/CopyDirRecursiveOverwriteSpec.hs | 131 +++++++++++++----- test/HPath/IO/CopyDirRecursiveSpec.hs | 108 ++++++++++----- test/HPath/IO/CopyFileOverwriteSpec.hs | 98 +++++++------ test/HPath/IO/CopyFileSpec.hs | 86 +++++++----- test/HPath/IO/CreateDirSpec.hs | 33 +++-- test/HPath/IO/CreateRegularFileSpec.hs | 33 +++-- test/HPath/IO/DeleteDirRecursiveSpec.hs | 86 +++++++----- test/HPath/IO/DeleteDirSpec.hs | 74 ++++++---- test/HPath/IO/DeleteFileSpec.hs | 43 +++--- test/HPath/IO/GetDirsFilesSpec.hs | 62 ++++++--- test/HPath/IO/GetFileTypeSpec.hs | 43 ++++-- test/HPath/IO/MoveFileOverwriteSpec.hs | 74 ++++++---- test/HPath/IO/MoveFileSpec.hs | 76 ++++++---- test/HPath/IO/RecreateSymlinkSpec.hs | 75 ++++++---- test/HPath/IO/RenameFileSpec.hs | 75 ++++++---- test/HPath/IO/canonicalizePathSpec/brokenSym | 1 - test/HPath/IO/canonicalizePathSpec/dir/.keep | 0 test/HPath/IO/canonicalizePathSpec/dirSym | 1 - test/HPath/IO/canonicalizePathSpec/file | 0 test/HPath/IO/canonicalizePathSpec/fileSym | 1 - .../alreadyExists | 0 .../alreadyExistsD/.keep | 0 .../alreadyExistsD/bar/inputFile3 | 8 -- .../alreadyExistsD/foo/inputFile1 | 1 - .../alreadyExistsD/inputFile2 | 4 - .../inputDir/bar/inputFile3 | 8 -- .../inputDir/foo/inputFile1 | 1 - .../inputDir/inputFile2 | 4 - .../noPerms/inputDir/bar/inputFile3 | 8 -- .../noPerms/inputDir/foo/inputFile1 | 1 - .../noPerms/inputDir/inputFile2 | 4 - .../noWritePerm/.keep | 0 .../copyDirRecursiveOverwriteSpec/wrongInput | 0 .../wrongInputSymL | 1 - .../IO/copyDirRecursiveSpec/alreadyExists | 0 .../copyDirRecursiveSpec/alreadyExistsD/.keep | 0 .../inputDir/bar/inputFile3 | 8 -- .../inputDir/foo/inputFile1 | 1 - .../copyDirRecursiveSpec/inputDir/inputFile2 | 4 - .../noPerms/inputDir/bar/inputFile3 | 8 -- .../noPerms/inputDir/foo/inputFile1 | 1 - .../noPerms/inputDir/inputFile2 | 4 - .../IO/copyDirRecursiveSpec/noWritePerm/.keep | 0 test/HPath/IO/copyDirRecursiveSpec/wrongInput | 0 .../IO/copyDirRecursiveSpec/wrongInputSymL | 1 - .../IO/copyFileOverwriteSpec/alreadyExists | 16 --- .../alreadyExistsD/.keep | 0 test/HPath/IO/copyFileOverwriteSpec/inputFile | 4 - .../IO/copyFileOverwriteSpec/inputFileSymL | 1 - .../copyFileOverwriteSpec/noPerms/inputFile | 0 .../outputDirNoWrite/.keep | 0 .../IO/copyFileOverwriteSpec/wrongInput/.keep | 0 test/HPath/IO/copyFileSpec/alreadyExists | 0 .../IO/copyFileSpec/alreadyExistsD/.keep | 0 test/HPath/IO/copyFileSpec/inputFile | 2 - test/HPath/IO/copyFileSpec/inputFileSymL | 1 - test/HPath/IO/copyFileSpec/noPerms/inputFile | 0 .../IO/copyFileSpec/outputDirNoWrite/.keep | 0 test/HPath/IO/copyFileSpec/wrongInput/.keep | 0 test/HPath/IO/createDirSpec/.keep | 0 .../IO/createDirSpec/alreadyExists/.keep | 0 test/HPath/IO/createDirSpec/noPerms/.keep | 0 .../HPath/IO/createDirSpec/noWritePerms/.keep | 0 .../IO/createRegularFileSpec/alreadyExists | 0 .../IO/createRegularFileSpec/noPerms/.keep | 0 .../createRegularFileSpec/noWritePerms/.keep | 0 test/HPath/IO/deleteDirRecursiveSpec/.keep | 0 .../HPath/IO/deleteDirRecursiveSpec/dir/.keep | 0 test/HPath/IO/deleteDirRecursiveSpec/dirSym | 1 - test/HPath/IO/deleteDirRecursiveSpec/file | 0 .../IO/deleteDirRecursiveSpec/noPerms/.keep | 0 .../deleteDirRecursiveSpec/noWritable/.keep | 0 test/HPath/IO/deleteDirSpec/.keep | 0 test/HPath/IO/deleteDirSpec/dir/.keep | 0 test/HPath/IO/deleteDirSpec/dirSym | 1 - test/HPath/IO/deleteDirSpec/file | 0 test/HPath/IO/deleteDirSpec/noPerms/.keep | 0 test/HPath/IO/deleteDirSpec/noWritable/.keep | 0 test/HPath/IO/deleteFileSpec/dir/.keep | 0 test/HPath/IO/deleteFileSpec/foo | 0 test/HPath/IO/deleteFileSpec/noPerms/blah | 0 test/HPath/IO/deleteFileSpec/syml | 1 - test/HPath/IO/getDirsFilesSpec/.hidden | 0 test/HPath/IO/getDirsFilesSpec/Lala | 0 test/HPath/IO/getDirsFilesSpec/dir/.keep | 0 test/HPath/IO/getDirsFilesSpec/dirsym | 1 - test/HPath/IO/getDirsFilesSpec/file | 0 test/HPath/IO/getDirsFilesSpec/noPerms/.keep | 0 test/HPath/IO/getDirsFilesSpec/syml | 1 - test/HPath/IO/getFileTypeSpec/brokenSymlink | 1 - test/HPath/IO/getFileTypeSpec/directory/.keep | 0 test/HPath/IO/getFileTypeSpec/noPerms/.keep | 0 test/HPath/IO/getFileTypeSpec/regularfile | 0 test/HPath/IO/getFileTypeSpec/symlink | 1 - test/HPath/IO/getFileTypeSpec/symlinkD | 1 - .../alreadyExistsD/.keep | 0 test/HPath/IO/moveFileOverwriteSpec/dir/.keep | 0 test/HPath/IO/moveFileOverwriteSpec/myFile | 4 - test/HPath/IO/moveFileOverwriteSpec/myFileL | 1 - .../IO/moveFileOverwriteSpec/noPerms/myFile | 0 .../moveFileOverwriteSpec/noWritePerm/.keep | 0 test/HPath/IO/moveFileSpec/alreadyExists | 2 - .../IO/moveFileSpec/alreadyExistsD/.keep | 0 test/HPath/IO/moveFileSpec/dir/.keep | 0 test/HPath/IO/moveFileSpec/myFile | 4 - test/HPath/IO/moveFileSpec/myFileL | 1 - test/HPath/IO/moveFileSpec/noPerms/myFile | 0 test/HPath/IO/moveFileSpec/noWritePerm/.keep | 0 .../IO/recreateSymlinkSpec/alreadyExists | 3 - .../recreateSymlinkSpec/alreadyExistsD/.keep | 0 test/HPath/IO/recreateSymlinkSpec/dir/.keep | 0 test/HPath/IO/recreateSymlinkSpec/myFile | 4 - test/HPath/IO/recreateSymlinkSpec/myFileL | 1 - .../IO/recreateSymlinkSpec/noPerms/myFile | 4 - .../IO/recreateSymlinkSpec/noPerms/myFileL | 1 - .../IO/recreateSymlinkSpec/noWritePerm/.keep | 0 test/HPath/IO/renameFileSpec/alreadyExists | 3 - .../IO/renameFileSpec/alreadyExistsD/.keep | 0 test/HPath/IO/renameFileSpec/dir/.keep | 0 test/HPath/IO/renameFileSpec/myFile | 4 - test/HPath/IO/renameFileSpec/myFileL | 1 - test/HPath/IO/renameFileSpec/noPerms/myFile | 0 .../HPath/IO/renameFileSpec/noWritePerm/.keep | 0 test/Main.hs | 42 +----- test/Utils.hs | 112 ++++++++++----- 127 files changed, 807 insertions(+), 638 deletions(-) delete mode 120000 test/HPath/IO/canonicalizePathSpec/brokenSym delete mode 100644 test/HPath/IO/canonicalizePathSpec/dir/.keep delete mode 120000 test/HPath/IO/canonicalizePathSpec/dirSym delete mode 100644 test/HPath/IO/canonicalizePathSpec/file delete mode 120000 test/HPath/IO/canonicalizePathSpec/fileSym delete mode 100755 test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExists delete mode 100644 test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/.keep delete mode 100644 test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/bar/inputFile3 delete mode 100644 test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/foo/inputFile1 delete mode 100644 test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/inputFile2 delete mode 100644 test/HPath/IO/copyDirRecursiveOverwriteSpec/inputDir/bar/inputFile3 delete mode 100644 test/HPath/IO/copyDirRecursiveOverwriteSpec/inputDir/foo/inputFile1 delete mode 100644 test/HPath/IO/copyDirRecursiveOverwriteSpec/inputDir/inputFile2 delete mode 100644 test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms/inputDir/bar/inputFile3 delete mode 100644 test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms/inputDir/foo/inputFile1 delete mode 100644 test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms/inputDir/inputFile2 delete mode 100644 test/HPath/IO/copyDirRecursiveOverwriteSpec/noWritePerm/.keep delete mode 100644 test/HPath/IO/copyDirRecursiveOverwriteSpec/wrongInput delete mode 120000 test/HPath/IO/copyDirRecursiveOverwriteSpec/wrongInputSymL delete mode 100644 test/HPath/IO/copyDirRecursiveSpec/alreadyExists delete mode 100644 test/HPath/IO/copyDirRecursiveSpec/alreadyExistsD/.keep delete mode 100644 test/HPath/IO/copyDirRecursiveSpec/inputDir/bar/inputFile3 delete mode 100644 test/HPath/IO/copyDirRecursiveSpec/inputDir/foo/inputFile1 delete mode 100644 test/HPath/IO/copyDirRecursiveSpec/inputDir/inputFile2 delete mode 100644 test/HPath/IO/copyDirRecursiveSpec/noPerms/inputDir/bar/inputFile3 delete mode 100644 test/HPath/IO/copyDirRecursiveSpec/noPerms/inputDir/foo/inputFile1 delete mode 100644 test/HPath/IO/copyDirRecursiveSpec/noPerms/inputDir/inputFile2 delete mode 100644 test/HPath/IO/copyDirRecursiveSpec/noWritePerm/.keep delete mode 100644 test/HPath/IO/copyDirRecursiveSpec/wrongInput delete mode 120000 test/HPath/IO/copyDirRecursiveSpec/wrongInputSymL delete mode 100644 test/HPath/IO/copyFileOverwriteSpec/alreadyExists delete mode 100644 test/HPath/IO/copyFileOverwriteSpec/alreadyExistsD/.keep delete mode 100644 test/HPath/IO/copyFileOverwriteSpec/inputFile delete mode 120000 test/HPath/IO/copyFileOverwriteSpec/inputFileSymL delete mode 100644 test/HPath/IO/copyFileOverwriteSpec/noPerms/inputFile delete mode 100644 test/HPath/IO/copyFileOverwriteSpec/outputDirNoWrite/.keep delete mode 100644 test/HPath/IO/copyFileOverwriteSpec/wrongInput/.keep delete mode 100644 test/HPath/IO/copyFileSpec/alreadyExists delete mode 100644 test/HPath/IO/copyFileSpec/alreadyExistsD/.keep delete mode 100644 test/HPath/IO/copyFileSpec/inputFile delete mode 120000 test/HPath/IO/copyFileSpec/inputFileSymL delete mode 100644 test/HPath/IO/copyFileSpec/noPerms/inputFile delete mode 100644 test/HPath/IO/copyFileSpec/outputDirNoWrite/.keep delete mode 100644 test/HPath/IO/copyFileSpec/wrongInput/.keep delete mode 100644 test/HPath/IO/createDirSpec/.keep delete mode 100644 test/HPath/IO/createDirSpec/alreadyExists/.keep delete mode 100644 test/HPath/IO/createDirSpec/noPerms/.keep delete mode 100644 test/HPath/IO/createDirSpec/noWritePerms/.keep delete mode 100644 test/HPath/IO/createRegularFileSpec/alreadyExists delete mode 100644 test/HPath/IO/createRegularFileSpec/noPerms/.keep delete mode 100644 test/HPath/IO/createRegularFileSpec/noWritePerms/.keep delete mode 100644 test/HPath/IO/deleteDirRecursiveSpec/.keep delete mode 100644 test/HPath/IO/deleteDirRecursiveSpec/dir/.keep delete mode 120000 test/HPath/IO/deleteDirRecursiveSpec/dirSym delete mode 100644 test/HPath/IO/deleteDirRecursiveSpec/file delete mode 100644 test/HPath/IO/deleteDirRecursiveSpec/noPerms/.keep delete mode 100644 test/HPath/IO/deleteDirRecursiveSpec/noWritable/.keep delete mode 100644 test/HPath/IO/deleteDirSpec/.keep delete mode 100644 test/HPath/IO/deleteDirSpec/dir/.keep delete mode 120000 test/HPath/IO/deleteDirSpec/dirSym delete mode 100644 test/HPath/IO/deleteDirSpec/file delete mode 100644 test/HPath/IO/deleteDirSpec/noPerms/.keep delete mode 100644 test/HPath/IO/deleteDirSpec/noWritable/.keep delete mode 100644 test/HPath/IO/deleteFileSpec/dir/.keep delete mode 100644 test/HPath/IO/deleteFileSpec/foo delete mode 100644 test/HPath/IO/deleteFileSpec/noPerms/blah delete mode 120000 test/HPath/IO/deleteFileSpec/syml delete mode 100644 test/HPath/IO/getDirsFilesSpec/.hidden delete mode 100644 test/HPath/IO/getDirsFilesSpec/Lala delete mode 100644 test/HPath/IO/getDirsFilesSpec/dir/.keep delete mode 120000 test/HPath/IO/getDirsFilesSpec/dirsym delete mode 100644 test/HPath/IO/getDirsFilesSpec/file delete mode 100644 test/HPath/IO/getDirsFilesSpec/noPerms/.keep delete mode 120000 test/HPath/IO/getDirsFilesSpec/syml delete mode 120000 test/HPath/IO/getFileTypeSpec/brokenSymlink delete mode 100644 test/HPath/IO/getFileTypeSpec/directory/.keep delete mode 100644 test/HPath/IO/getFileTypeSpec/noPerms/.keep delete mode 100644 test/HPath/IO/getFileTypeSpec/regularfile delete mode 120000 test/HPath/IO/getFileTypeSpec/symlink delete mode 120000 test/HPath/IO/getFileTypeSpec/symlinkD delete mode 100644 test/HPath/IO/moveFileOverwriteSpec/alreadyExistsD/.keep delete mode 100644 test/HPath/IO/moveFileOverwriteSpec/dir/.keep delete mode 100644 test/HPath/IO/moveFileOverwriteSpec/myFile delete mode 120000 test/HPath/IO/moveFileOverwriteSpec/myFileL delete mode 100644 test/HPath/IO/moveFileOverwriteSpec/noPerms/myFile delete mode 100644 test/HPath/IO/moveFileOverwriteSpec/noWritePerm/.keep delete mode 100644 test/HPath/IO/moveFileSpec/alreadyExists delete mode 100644 test/HPath/IO/moveFileSpec/alreadyExistsD/.keep delete mode 100644 test/HPath/IO/moveFileSpec/dir/.keep delete mode 100644 test/HPath/IO/moveFileSpec/myFile delete mode 120000 test/HPath/IO/moveFileSpec/myFileL delete mode 100644 test/HPath/IO/moveFileSpec/noPerms/myFile delete mode 100644 test/HPath/IO/moveFileSpec/noWritePerm/.keep delete mode 100644 test/HPath/IO/recreateSymlinkSpec/alreadyExists delete mode 100644 test/HPath/IO/recreateSymlinkSpec/alreadyExistsD/.keep delete mode 100644 test/HPath/IO/recreateSymlinkSpec/dir/.keep delete mode 100644 test/HPath/IO/recreateSymlinkSpec/myFile delete mode 120000 test/HPath/IO/recreateSymlinkSpec/myFileL delete mode 100644 test/HPath/IO/recreateSymlinkSpec/noPerms/myFile delete mode 120000 test/HPath/IO/recreateSymlinkSpec/noPerms/myFileL delete mode 100644 test/HPath/IO/recreateSymlinkSpec/noWritePerm/.keep delete mode 100644 test/HPath/IO/renameFileSpec/alreadyExists delete mode 100644 test/HPath/IO/renameFileSpec/alreadyExistsD/.keep delete mode 100644 test/HPath/IO/renameFileSpec/dir/.keep delete mode 100644 test/HPath/IO/renameFileSpec/myFile delete mode 120000 test/HPath/IO/renameFileSpec/myFileL delete mode 100644 test/HPath/IO/renameFileSpec/noPerms/myFile delete mode 100644 test/HPath/IO/renameFileSpec/noWritePerm/.keep diff --git a/hpath.cabal b/hpath.cabal index b024723..64b4ee0 100644 --- a/hpath.cabal +++ b/hpath.cabal @@ -74,21 +74,6 @@ test-suite spec Main-Is: Main.hs other-modules: Spec - HPath.IO.CopyDirRecursiveSpec - HPath.IO.CopyDirRecursiveOverwriteSpec - HPath.IO.CopyFileSpec - HPath.IO.CopyFileOverwriteSpec - HPath.IO.CreateDirSpec - HPath.IO.CreateRegularFileSpec - HPath.IO.DeleteDirRecursiveSpec - HPath.IO.DeleteDirSpec - HPath.IO.DeleteFileSpec - HPath.IO.GetDirsFilesSpec - HPath.IO.GetFileTypeSpec - HPath.IO.MoveFileSpec - HPath.IO.MoveFileOverwriteSpec - HPath.IO.RecreateSymlinkSpec - HPath.IO.RenameFileSpec Utils GHC-Options: -Wall Build-Depends: base @@ -98,6 +83,7 @@ test-suite spec , hspec >= 1.3 , process , unix + , unix-bytestring , utf8-string benchmark bench.hs diff --git a/test/HPath/IO/CanonicalizePathSpec.hs b/test/HPath/IO/CanonicalizePathSpec.hs index 7e00269..b268933 100644 --- a/test/HPath/IO/CanonicalizePathSpec.hs +++ b/test/HPath/IO/CanonicalizePathSpec.hs @@ -17,50 +17,59 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append -specDir :: BS.ByteString -specDir = "test/HPath/IO/canonicalizePathSpec/" -specDir' :: String -specDir' = toString specDir +setupFiles :: IO () +setupFiles = do + createRegularFile' "file" + createDir' "dir" + createSymlink' "dirSym" "dir/" + createSymlink' "brokenSym" "nothing" + createSymlink' "fileSym" "file" + +cleanupFiles :: IO () +cleanupFiles = do + deleteFile' "file" + deleteDir' "dir" + deleteFile' "dirSym" + deleteFile' "brokenSym" + deleteFile' "fileSym" spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.canonicalizePath" $ do -- successes -- it "canonicalizePath, all fine" $ do - path <- withPwd (specDir `ba` "file") return - canonicalizePath' (specDir `ba` "file") + path <- withTmpDir "file" return + canonicalizePath' "file" `shouldReturn` path it "canonicalizePath, all fine" $ do - path <- withPwd (specDir `ba` "dir") return - canonicalizePath' (specDir `ba` "dir") + path <- withTmpDir "dir" return + canonicalizePath' "dir" `shouldReturn` path it "canonicalizePath, all fine" $ do - path <- withPwd (specDir `ba` "file") return - canonicalizePath' (specDir `ba` "fileSym") + path <- withTmpDir "file" return + canonicalizePath' "fileSym" `shouldReturn` path it "canonicalizePath, all fine" $ do - path <- withPwd (specDir `ba` "dir") return - canonicalizePath' (specDir `ba` "dirSym") + path <- withTmpDir "dir" return + canonicalizePath' "dirSym" `shouldReturn` path -- posix failures -- it "canonicalizePath, broken symlink" $ - canonicalizePath' (specDir `ba` "brokenSym") + canonicalizePath' "brokenSym" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "canonicalizePath, file does not exist" $ - canonicalizePath' (specDir `ba` "nothingBlah") + canonicalizePath' "nothingBlah" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) diff --git a/test/HPath/IO/CopyDirRecursiveOverwriteSpec.hs b/test/HPath/IO/CopyDirRecursiveOverwriteSpec.hs index bc178ad..cdafd55 100644 --- a/test/HPath/IO/CopyDirRecursiveOverwriteSpec.hs +++ b/test/HPath/IO/CopyDirRecursiveOverwriteSpec.hs @@ -1,5 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} + module HPath.IO.CopyDirRecursiveOverwriteSpec where @@ -20,91 +21,149 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append -specDir :: BS.ByteString -specDir = "test/HPath/IO/copyDirRecursiveOverwriteSpec/" +setupFiles :: IO () +setupFiles = do + createRegularFile' "alreadyExists" + createRegularFile' "wrongInput" + createSymlink' "wrongInputSymL" "inputDir/" + createDir' "noPerms" + createDir' "noWritePerm" + + createDir' "inputDir" + createDir' "inputDir/bar" + createDir' "inputDir/foo" + createRegularFile' "inputDir/foo/inputFile1" + createRegularFile' "inputDir/inputFile2" + createRegularFile' "inputDir/bar/inputFile3" + writeFile' "inputDir/foo/inputFile1" "SDAADSdsada" + writeFile' "inputDir/inputFile2" "Blahfaselgagaga" + writeFile' "inputDir/bar/inputFile3" + "fdfdssdffsd3223sasdasdasdadasasddasdasdasasd4" + + createDir' "alreadyExistsD" + createDir' "alreadyExistsD/bar" + createDir' "alreadyExistsD/foo" + createRegularFile' "alreadyExistsD/foo/inputFile1" + createRegularFile' "alreadyExistsD/inputFile2" + createRegularFile' "alreadyExistsD/bar/inputFile3" + writeFile' "alreadyExistsD/foo/inputFile1" "DAAsada" + writeFile' "alreadyExistsD/inputFile2" "ahfaagaga" + writeFile' "alreadyExistsD/bar/inputFile3" + "f3223sasdasdaasdasdasasd4" + + noPerms "noPerms" + noWritableDirPerms "noWritePerm" + + +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + normalDirPerms "noWritePerm" + deleteFile' "alreadyExists" + deleteFile' "wrongInput" + deleteFile' "wrongInputSymL" + deleteDir' "noPerms" + deleteDir' "noWritePerm" + deleteFile' "inputDir/foo/inputFile1" + deleteFile' "inputDir/inputFile2" + deleteFile' "inputDir/bar/inputFile3" + deleteDir' "inputDir/foo" + deleteDir' "inputDir/bar" + deleteDir' "inputDir" + deleteFile' "alreadyExistsD/foo/inputFile1" + deleteFile' "alreadyExistsD/inputFile2" + deleteFile' "alreadyExistsD/bar/inputFile3" + deleteDir' "alreadyExistsD/foo" + deleteDir' "alreadyExistsD/bar" + deleteDir' "alreadyExistsD" -specDir' :: String -specDir' = toString specDir spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.copyDirRecursiveOverwrite" $ do -- successes -- it "copyDirRecursiveOverwrite, all fine" $ do - copyDirRecursiveOverwrite' (specDir `ba` "inputDir") - (specDir `ba` "outputDir") - removeDirIfExists $ specDir `ba` "outputDir" + copyDirRecursiveOverwrite' "inputDir" + "outputDir" + removeDirIfExists "outputDir" it "copyDirRecursiveOverwrite, all fine and compare" $ do - copyDirRecursiveOverwrite' (specDir `ba` "inputDir") - (specDir `ba` "outputDir") + copyDirRecursiveOverwrite' "inputDir" + "outputDir" (system $ "diff -r --no-dereference " - ++ specDir' ++ "inputDir" ++ " " - ++ specDir' ++ "outputDir") + ++ toString tmpDir ++ "inputDir" ++ " " + ++ toString tmpDir ++ "outputDir") `shouldReturn` ExitSuccess - removeDirIfExists $ specDir `ba` "outputDir" + removeDirIfExists "outputDir" - it "copyDirRecursiveOverwrite, destination dir already exists" $ - copyDirRecursiveOverwrite' (specDir `ba` "inputDir") - (specDir `ba` "alreadyExistsD") + it "copyDirRecursiveOverwrite, destination dir already exists" $ do + (system $ "diff -r --no-dereference " + ++ toString tmpDir ++ "inputDir" ++ " " + ++ toString tmpDir ++ "alreadyExistsD") + `shouldReturn` (ExitFailure 1) + copyDirRecursiveOverwrite' "inputDir" + "alreadyExistsD" + (system $ "diff -r --no-dereference " + ++ toString tmpDir ++ "inputDir" ++ " " + ++ toString tmpDir ++ "alreadyExistsD") + `shouldReturn` ExitSuccess + removeDirIfExists "outputDir" -- posix failures -- it "copyDirRecursiveOverwrite, source directory does not exist" $ - copyDirRecursiveOverwrite' (specDir `ba` "doesNotExist") - (specDir `ba` "outputDir") + copyDirRecursiveOverwrite' "doesNotExist" + "outputDir" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "copyDirRecursiveOverwrite, no write permission on output dir" $ - copyDirRecursiveOverwrite' (specDir `ba` "inputDir") - (specDir `ba` "noWritePerm/foo") + copyDirRecursiveOverwrite' "inputDir" + "noWritePerm/foo" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "copyDirRecursiveOverwrite, cannot open output dir" $ - copyDirRecursiveOverwrite' (specDir `ba` "inputDir") - (specDir `ba` "noPerms/foo") + copyDirRecursiveOverwrite' "inputDir" + "noPerms/foo" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "copyDirRecursiveOverwrite, cannot open source dir" $ - copyDirRecursiveOverwrite' (specDir `ba` "noPerms/inputDir") - (specDir `ba` "foo") + copyDirRecursiveOverwrite' "noPerms/inputDir" + "foo" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "copyDirRecursiveOverwrite, destination already exists and is a file" $ - copyDirRecursiveOverwrite' (specDir `ba` "inputDir") - (specDir `ba` "alreadyExists") + copyDirRecursiveOverwrite' "inputDir" + "alreadyExists" `shouldThrow` (\e -> ioeGetErrorType e == InappropriateType) it "copyDirRecursiveOverwrite, wrong input (regular file)" $ - copyDirRecursiveOverwrite' (specDir `ba` "wrongInput") - (specDir `ba` "outputDir") + copyDirRecursiveOverwrite' "wrongInput" + "outputDir" `shouldThrow` (\e -> ioeGetErrorType e == InappropriateType) it "copyDirRecursiveOverwrite, wrong input (symlink to directory)" $ - copyDirRecursiveOverwrite' (specDir `ba` "wrongInputSymL") - (specDir `ba` "outputDir") + copyDirRecursiveOverwrite' "wrongInputSymL" + "outputDir" `shouldThrow` (\e -> ioeGetErrorType e == InvalidArgument) -- custom failures it "copyDirRecursiveOverwrite, destination in source" $ - copyDirRecursiveOverwrite' (specDir `ba` "inputDir") - (specDir `ba` "inputDir/foo") + copyDirRecursiveOverwrite' "inputDir" + "inputDir/foo" `shouldThrow` isDestinationInSource it "copyDirRecursiveOverwrite, destination and source same directory" $ - copyDirRecursiveOverwrite' (specDir `ba` "inputDir") - (specDir `ba` "inputDir") + copyDirRecursiveOverwrite' "inputDir" + "inputDir" `shouldThrow` isSameFile diff --git a/test/HPath/IO/CopyDirRecursiveSpec.hs b/test/HPath/IO/CopyDirRecursiveSpec.hs index 0bdee58..00f2637 100644 --- a/test/HPath/IO/CopyDirRecursiveSpec.hs +++ b/test/HPath/IO/CopyDirRecursiveSpec.hs @@ -1,5 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} + module HPath.IO.CopyDirRecursiveSpec where @@ -20,93 +21,130 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append -specDir :: BS.ByteString -specDir = "test/HPath/IO/copyDirRecursiveSpec/" -specDir' :: String -specDir' = toString specDir + +setupFiles :: IO () +setupFiles = do + createRegularFile' "alreadyExists" + createRegularFile' "wrongInput" + createSymlink' "wrongInputSymL" "inputDir/" + createDir' "alreadyExistsD" + createDir' "noPerms" + createDir' "noWritePerm" + + createDir' "inputDir" + createDir' "inputDir/bar" + createDir' "inputDir/foo" + createRegularFile' "inputDir/foo/inputFile1" + createRegularFile' "inputDir/inputFile2" + createRegularFile' "inputDir/bar/inputFile3" + writeFile' "inputDir/foo/inputFile1" "SDAADSdsada" + writeFile' "inputDir/inputFile2" "Blahfaselgagaga" + writeFile' "inputDir/bar/inputFile3" + "fdfdssdffsd3223sasdasdasdadasasddasdasdasasd4" + + noPerms "noPerms" + noWritableDirPerms "noWritePerm" + + +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + normalDirPerms "noWritePerm" + deleteFile' "alreadyExists" + deleteFile' "wrongInput" + deleteFile' "wrongInputSymL" + deleteDir' "alreadyExistsD" + deleteDir' "noPerms" + deleteDir' "noWritePerm" + deleteFile' "inputDir/foo/inputFile1" + deleteFile' "inputDir/inputFile2" + deleteFile' "inputDir/bar/inputFile3" + deleteDir' "inputDir/foo" + deleteDir' "inputDir/bar" + deleteDir' "inputDir" + + spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.copyDirRecursive" $ do -- successes -- it "copyDirRecursive, all fine" $ do - copyDirRecursive' (specDir `ba` "inputDir") - (specDir `ba` "outputDir") - removeDirIfExists (specDir `ba` "outputDir") + copyDirRecursive' "inputDir" + "outputDir" + removeDirIfExists "outputDir" it "copyDirRecursive, all fine and compare" $ do - copyDirRecursive' (specDir `ba` "inputDir") - (specDir `ba` "outputDir") + copyDirRecursive' "inputDir" + "outputDir" (system $ "diff -r --no-dereference " - ++ specDir' ++ "inputDir" ++ " " - ++ specDir' ++ "outputDir") + ++ toString tmpDir ++ "inputDir" ++ " " + ++ toString tmpDir ++ "outputDir") `shouldReturn` ExitSuccess - removeDirIfExists (specDir `ba` "outputDir") + removeDirIfExists "outputDir" -- posix failures -- it "copyDirRecursive, source directory does not exist" $ - copyDirRecursive' (specDir `ba` "doesNotExist") - (specDir `ba` "outputDir") + copyDirRecursive' "doesNotExist" + "outputDir" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "copyDirRecursive, no write permission on output dir" $ - copyDirRecursive' (specDir `ba` "inputDir") - (specDir `ba` "noWritePerm/foo") + copyDirRecursive' "inputDir" + "noWritePerm/foo" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "copyDirRecursive, cannot open output dir" $ - copyDirRecursive' (specDir `ba` "inputDir") - (specDir `ba` "noPerms/foo") + copyDirRecursive' "inputDir" + "noPerms/foo" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "copyDirRecursive, cannot open source dir" $ - copyDirRecursive' (specDir `ba` "noPerms/inputDir") - (specDir `ba` "foo") + copyDirRecursive' "noPerms/inputDir" + "foo" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "copyDirRecursive, destination dir already exists" $ - copyDirRecursive' (specDir `ba` "inputDir") - (specDir `ba` "alreadyExistsD") + copyDirRecursive' "inputDir" + "alreadyExistsD" `shouldThrow` (\e -> ioeGetErrorType e == AlreadyExists) it "copyDirRecursive, destination already exists and is a file" $ - copyDirRecursive' (specDir `ba` "inputDir") - (specDir `ba` "alreadyExists") + copyDirRecursive' "inputDir" + "alreadyExists" `shouldThrow` (\e -> ioeGetErrorType e == AlreadyExists) it "copyDirRecursive, wrong input (regular file)" $ - copyDirRecursive' (specDir `ba` "wrongInput") - (specDir `ba` "outputDir") + copyDirRecursive' "wrongInput" + "outputDir" `shouldThrow` (\e -> ioeGetErrorType e == InappropriateType) it "copyDirRecursive, wrong input (symlink to directory)" $ - copyDirRecursive' (specDir `ba` "wrongInputSymL") - (specDir `ba` "outputDir") + copyDirRecursive' "wrongInputSymL" + "outputDir" `shouldThrow` (\e -> ioeGetErrorType e == InvalidArgument) -- custom failures it "copyDirRecursive, destination in source" $ - copyDirRecursive' (specDir `ba` "inputDir") - (specDir `ba` "inputDir/foo") + copyDirRecursive' "inputDir" + "inputDir/foo" `shouldThrow` isDestinationInSource it "copyDirRecursive, destination and source same directory" $ - copyDirRecursive' (specDir `ba` "inputDir") - (specDir `ba` "inputDir") + copyDirRecursive' "inputDir" + "inputDir" `shouldThrow` isSameFile diff --git a/test/HPath/IO/CopyFileOverwriteSpec.hs b/test/HPath/IO/CopyFileOverwriteSpec.hs index 8639500..2fa6a8f 100644 --- a/test/HPath/IO/CopyFileOverwriteSpec.hs +++ b/test/HPath/IO/CopyFileOverwriteSpec.hs @@ -20,90 +20,110 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createRegularFile' "inputFile" + createRegularFile' "alreadyExists" + createSymlink' "inputFileSymL" "inputFile" + createDir' "alreadyExistsD" + createDir' "noPerms" + createRegularFile' "noPerms/inputFile" + createDir' "outputDirNoWrite" + createDir' "wrongInput" + noPerms "noPerms" + noWritableDirPerms "outputDirNoWrite" + writeFile' "inputFile" "Blahfaselgagaga" + writeFile' "alreadyExists" "dsaldsalkaklsdlkasksdadasl" -specDir :: BS.ByteString -specDir = "test/HPath/IO/copyFileOverwriteSpec/" -specDir' :: String -specDir' = toString specDir +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + normalDirPerms "outputDirNoWrite" + deleteFile' "noPerms/inputFile" + deleteFile' "inputFile" + deleteFile' "alreadyExists" + deleteFile' "inputFileSymL" + deleteDir' "alreadyExistsD" + deleteDir' "noPerms" + deleteDir' "outputDirNoWrite" + deleteDir' "wrongInput" spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.copyFileOverwrite" $ do -- successes -- it "copyFileOverwrite, everything clear" $ do - copyFileOverwrite' (specDir `ba` "inputFile") - (specDir `ba` "outputFile") - removeFileIfExists (specDir `ba` "outputFile") + copyFileOverwrite' "inputFile" + "outputFile" + removeFileIfExists "outputFile" it "copyFileOverwrite, output file already exists, all clear" $ do - copyFile' (specDir `ba` "alreadyExists") (specDir `ba` "alreadyExists.bak") - copyFileOverwrite' (specDir `ba` "inputFile") - (specDir `ba` "alreadyExists") - (system $ "cmp -s " ++ specDir' ++ "inputFile" ++ " " - ++ specDir' ++ "alreadyExists") + copyFile' "alreadyExists" "alreadyExists.bak" + copyFileOverwrite' "inputFile" + "alreadyExists" + (system $ "cmp -s " ++ toString tmpDir ++ "inputFile" ++ " " + ++ toString tmpDir ++ "alreadyExists") `shouldReturn` ExitSuccess - removeFileIfExists (specDir `ba` "alreadyExists") - copyFile' (specDir `ba` "alreadyExists.bak") (specDir `ba` "alreadyExists") - removeFileIfExists (specDir `ba` "alreadyExists.bak") + removeFileIfExists "alreadyExists" + copyFile' "alreadyExists.bak" "alreadyExists" + removeFileIfExists "alreadyExists.bak" it "copyFileOverwrite, and compare" $ do - copyFileOverwrite' (specDir `ba` "inputFile") - (specDir `ba` "outputFile") - (system $ "cmp -s " ++ specDir' ++ "inputFile" ++ " " - ++ specDir' ++ "outputFile") + copyFileOverwrite' "inputFile" + "outputFile" + (system $ "cmp -s " ++ toString tmpDir ++ "inputFile" ++ " " + ++ toString tmpDir ++ "outputFile") `shouldReturn` ExitSuccess - removeFileIfExists (specDir `ba` "outputFile") + removeFileIfExists "outputFile" -- posix failures -- it "copyFileOverwrite, input file does not exist" $ - copyFileOverwrite' (specDir `ba` "noSuchFile") - (specDir `ba` "outputFile") + copyFileOverwrite' "noSuchFile" + "outputFile" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "copyFileOverwrite, no permission to write to output directory" $ - copyFileOverwrite' (specDir `ba` "inputFile") - (specDir `ba` "outputDirNoWrite/outputFile") + copyFileOverwrite' "inputFile" + "outputDirNoWrite/outputFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "copyFileOverwrite, cannot open output directory" $ - copyFileOverwrite' (specDir `ba` "inputFile") - (specDir `ba` "noPerms/outputFile") + copyFileOverwrite' "inputFile" + "noPerms/outputFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "copyFileOverwrite, cannot open source directory" $ - copyFileOverwrite' (specDir `ba` "noPerms/inputFile") - (specDir `ba` "outputFile") + copyFileOverwrite' "noPerms/inputFile" + "outputFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "copyFileOverwrite, wrong input type (symlink)" $ - copyFileOverwrite' (specDir `ba` "inputFileSymL") - (specDir `ba` "outputFile") + copyFileOverwrite' "inputFileSymL" + "outputFile" `shouldThrow` (\e -> ioeGetErrorType e == InvalidArgument) it "copyFileOverwrite, wrong input type (directory)" $ - copyFileOverwrite' (specDir `ba` "wrongInput") - (specDir `ba` "outputFile") + copyFileOverwrite' "wrongInput" + "outputFile" `shouldThrow` (\e -> ioeGetErrorType e == InappropriateType) it "copyFileOverwrite, output file already exists and is a dir" $ - copyFileOverwrite' (specDir `ba` "inputFile") - (specDir `ba` "alreadyExistsD") + copyFileOverwrite' "inputFile" + "alreadyExistsD" `shouldThrow` (\e -> ioeGetErrorType e == InappropriateType) -- custom failures -- it "copyFileOverwrite, output and input are same file" $ - copyFileOverwrite' (specDir `ba` "inputFile") - (specDir `ba` "inputFile") + copyFileOverwrite' "inputFile" + "inputFile" `shouldThrow` isSameFile diff --git a/test/HPath/IO/CopyFileSpec.hs b/test/HPath/IO/CopyFileSpec.hs index cffbde3..daffbf1 100644 --- a/test/HPath/IO/CopyFileSpec.hs +++ b/test/HPath/IO/CopyFileSpec.hs @@ -1,5 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} + module HPath.IO.CopyFileSpec where @@ -20,86 +21,105 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createRegularFile' "inputFile" + createRegularFile' "alreadyExists" + createSymlink' "inputFileSymL" "inputFile" + createDir' "alreadyExistsD" + createDir' "noPerms" + createRegularFile' "noPerms/inputFile" + createDir' "outputDirNoWrite" + createDir' "wrongInput" + noPerms "noPerms" + noWritableDirPerms "outputDirNoWrite" + writeFile' "inputFile" "Blahfaselgagaga" -specDir :: BS.ByteString -specDir = "test/HPath/IO/copyFileSpec/" -specDir' :: String -specDir' = toString specDir +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + normalDirPerms "outputDirNoWrite" + deleteFile' "noPerms/inputFile" + deleteFile' "inputFile" + deleteFile' "alreadyExists" + deleteFile' "inputFileSymL" + deleteDir' "alreadyExistsD" + deleteDir' "noPerms" + deleteDir' "outputDirNoWrite" + deleteDir' "wrongInput" spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.copyFile" $ do -- successes -- it "copyFile, everything clear" $ do - copyFile' (specDir `ba` "inputFile") - (specDir `ba` "outputFile") - removeFileIfExists (specDir `ba` "outputFile") + copyFile' "inputFile" + "outputFile" + removeFileIfExists "outputFile" it "copyFile, and compare" $ do - copyFile' (specDir `ba` "inputFile") - (specDir `ba` "outputFile") - (system $ "cmp -s " ++ specDir' ++ "inputFile" ++ " " - ++ specDir' ++ "outputFile") + copyFile' "inputFile" + "outputFile" + (system $ "cmp -s " ++ toString tmpDir ++ "inputFile" ++ " " + ++ toString tmpDir ++ "outputFile") `shouldReturn` ExitSuccess - removeFileIfExists (specDir `ba` "outputFile") + removeFileIfExists "outputFile" -- posix failures -- it "copyFile, input file does not exist" $ - copyFile' (specDir `ba` "noSuchFile") - (specDir `ba` "outputFile") + copyFile' "noSuchFile" + "outputFile" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "copyFile, no permission to write to output directory" $ - copyFile' (specDir `ba` "inputFile") - (specDir `ba` "outputDirNoWrite/outputFile") + copyFile' "inputFile" + "outputDirNoWrite/outputFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "copyFile, cannot open output directory" $ - copyFile' (specDir `ba` "inputFile") - (specDir `ba` "noPerms/outputFile") + copyFile' "inputFile" + "noPerms/outputFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "copyFile, cannot open source directory" $ - copyFile' (specDir `ba` "noPerms/inputFile") - (specDir `ba` "outputFile") + copyFile' "noPerms/inputFile" + "outputFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "copyFile, wrong input type (symlink)" $ - copyFile' (specDir `ba` "inputFileSymL") - (specDir `ba` "outputFile") + copyFile' "inputFileSymL" + "outputFile" `shouldThrow` (\e -> ioeGetErrorType e == InvalidArgument) it "copyFile, wrong input type (directory)" $ - copyFile' (specDir `ba` "wrongInput") - (specDir `ba` "outputFile") + copyFile' "wrongInput" + "outputFile" `shouldThrow` (\e -> ioeGetErrorType e == InappropriateType) it "copyFile, output file already exists" $ - copyFile' (specDir `ba` "inputFile") - (specDir `ba` "alreadyExists") + copyFile' "inputFile" + "alreadyExists" `shouldThrow` (\e -> ioeGetErrorType e == AlreadyExists) it "copyFile, output file already exists and is a dir" $ - copyFile' (specDir `ba` "inputFile") - (specDir `ba` "alreadyExistsD") + copyFile' "inputFile" + "alreadyExistsD" `shouldThrow` (\e -> ioeGetErrorType e == AlreadyExists) -- custom failures -- it "copyFile, output and input are same file" $ - copyFile' (specDir `ba` "inputFile") - (specDir `ba` "inputFile") + copyFile' "inputFile" + "inputFile" `shouldThrow` isSameFile diff --git a/test/HPath/IO/CreateDirSpec.hs b/test/HPath/IO/CreateDirSpec.hs index da58b4f..39b376e 100644 --- a/test/HPath/IO/CreateDirSpec.hs +++ b/test/HPath/IO/CreateDirSpec.hs @@ -17,38 +17,47 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createDir' "alreadyExists" + createDir' "noPerms" + createDir' "noWritePerms" + noPerms "noPerms" + noWritableDirPerms "noWritePerms" -specDir :: BS.ByteString -specDir = "test/HPath/IO/createDirSpec/" -specDir' :: String -specDir' = toString specDir + +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + normalDirPerms "noWritePerms" + deleteDir' "alreadyExists" + deleteDir' "noPerms" + deleteDir' "noWritePerms" spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.createDir" $ do -- successes -- it "createDir, all fine" $ do - createDir' (specDir `ba` "newDir") - removeDirIfExists (specDir `ba` "newDir") + createDir' "newDir" + removeDirIfExists "newDir" -- posix failures -- it "createDir, can't write to output directory" $ - createDir' (specDir `ba` "noWritePerms/newDir") + createDir' "noWritePerms/newDir" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "createDir, can't open output directory" $ - createDir' (specDir `ba` "noPerms/newDir") + createDir' "noPerms/newDir" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "createDir, destination directory already exists" $ - createDir' (specDir `ba` "alreadyExists") + createDir' "alreadyExists" `shouldThrow` (\e -> ioeGetErrorType e == AlreadyExists) diff --git a/test/HPath/IO/CreateRegularFileSpec.hs b/test/HPath/IO/CreateRegularFileSpec.hs index 3901e5a..51c9178 100644 --- a/test/HPath/IO/CreateRegularFileSpec.hs +++ b/test/HPath/IO/CreateRegularFileSpec.hs @@ -17,38 +17,47 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createRegularFile' "alreadyExists" + createDir' "noPerms" + createDir' "noWritePerms" + noPerms "noPerms" + noWritableDirPerms "noWritePerms" -specDir :: BS.ByteString -specDir = "test/HPath/IO/createRegularFileSpec/" -specDir' :: String -specDir' = toString specDir + +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + normalDirPerms "noWritePerms" + deleteFile' "alreadyExists" + deleteDir' "noPerms" + deleteDir' "noWritePerms" spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.createRegularFile" $ do -- successes -- it "createRegularFile, all fine" $ do - createRegularFile' (specDir `ba` "newDir") - removeFileIfExists (specDir `ba` "newDir") + createRegularFile' "newDir" + removeFileIfExists "newDir" -- posix failures -- it "createRegularFile, can't write to destination directory" $ - createRegularFile' (specDir `ba` "noWritePerms/newDir") + createRegularFile' "noWritePerms/newDir" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "createRegularFile, can't write to destination directory" $ - createRegularFile' (specDir `ba` "noPerms/newDir") + createRegularFile' "noPerms/newDir" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "createRegularFile, destination file already exists" $ - createRegularFile' (specDir `ba` "alreadyExists") + createRegularFile' "alreadyExists" `shouldThrow` (\e -> ioeGetErrorType e == AlreadyExists) diff --git a/test/HPath/IO/DeleteDirRecursiveSpec.hs b/test/HPath/IO/DeleteDirRecursiveSpec.hs index bd8dd71..a251a7f 100644 --- a/test/HPath/IO/DeleteDirRecursiveSpec.hs +++ b/test/HPath/IO/DeleteDirRecursiveSpec.hs @@ -21,76 +21,90 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createRegularFile' "file" + createDir' "dir" + createRegularFile' "dir/.keep" + createSymlink' "dirSym" "dir/" + createDir' "noPerms" + createRegularFile' "noPerms/.keep" + createDir' "noWritable" + createRegularFile' "noWritable/.keep" -specDir :: BS.ByteString -specDir = "test/HPath/IO/deleteDirRecursiveSpec/" -specDir' :: String -specDir' = toString specDir +cleanupFiles :: IO () +cleanupFiles = do + deleteFile' "file" + deleteFile' "dir/.keep" + deleteDir' "dir" + deleteFile' "dirSym" + deleteFile' "noPerms/.keep" + deleteDir' "noPerms" + deleteFile' "noWritable/.keep" + deleteDir' "noWritable" spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.deleteDirRecursive" $ do -- successes -- it "deleteDirRecursive, empty directory, all fine" $ do - createDir' (specDir `ba` "testDir") - deleteDirRecursive' (specDir `ba` "testDir") - getSymbolicLinkStatus (specDir `ba` "testDir") + createDir' "testDir" + deleteDirRecursive' "testDir" + getSymbolicLinkStatus "testDir" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "deleteDirRecursive, empty directory with null permissions, all fine" $ do - createDir' (specDir `ba` "noPerms/testDir") - noPerms (specDir `ba` "noPerms/testDir") - deleteDirRecursive' (specDir `ba` "noPerms/testDir") + createDir' "noPerms/testDir" + noPerms "noPerms/testDir" + deleteDirRecursive' "noPerms/testDir" it "deleteDirRecursive, non-empty directory, all fine" $ do - createDir' (specDir `ba` "nonEmpty") - createDir' (specDir `ba` "nonEmpty/dir1") - createDir' (specDir `ba` "nonEmpty/dir2") - createDir' (specDir `ba` "nonEmpty/dir2/dir3") - createRegularFile' (specDir `ba` "nonEmpty/file1") - createRegularFile' (specDir `ba` "nonEmpty/dir1/file2") - deleteDirRecursive' (specDir `ba` "nonEmpty") - getSymbolicLinkStatus (specDir `ba` "nonEmpty") + createDir' "nonEmpty" + createDir' "nonEmpty/dir1" + createDir' "nonEmpty/dir2" + createDir' "nonEmpty/dir2/dir3" + createRegularFile' "nonEmpty/file1" + createRegularFile' "nonEmpty/dir1/file2" + deleteDirRecursive' "nonEmpty" + getSymbolicLinkStatus "nonEmpty" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) -- posix failures -- it "deleteDirRecursive, can't open parent directory" $ do - createDir' (specDir `ba` "noPerms/foo") - noPerms (specDir `ba` "noPerms") - (deleteDirRecursive' (specDir `ba` "noPerms/foo") + createDir' "noPerms/foo" + noPerms "noPerms" + (deleteDirRecursive' "noPerms/foo") `shouldThrow` - (\e -> ioeGetErrorType e == PermissionDenied)) - >> normalDirPerms (specDir `ba` "noPerms") - >> deleteDir' (specDir `ba` "noPerms/foo") + (\e -> ioeGetErrorType e == PermissionDenied) + normalDirPerms "noPerms" + deleteDir' "noPerms/foo" it "deleteDirRecursive, can't write to parent directory" $ do - createDir' (specDir `ba` "noWritable/foo") - noWritableDirPerms (specDir `ba` "noWritable") - (deleteDirRecursive' (specDir `ba` "noWritable/foo") + createDir' "noWritable/foo" + noWritableDirPerms "noWritable" + (deleteDirRecursive' "noWritable/foo") `shouldThrow` - (\e -> ioeGetErrorType e == PermissionDenied)) - normalDirPerms (specDir `ba` "noWritable") - deleteDir' (specDir `ba` "noWritable/foo") + (\e -> ioeGetErrorType e == PermissionDenied) + normalDirPerms "noWritable" + deleteDir' "noWritable/foo" it "deleteDirRecursive, wrong file type (symlink to directory)" $ - deleteDirRecursive' (specDir `ba` "dirSym") + deleteDirRecursive' "dirSym" `shouldThrow` (\e -> ioeGetErrorType e == InappropriateType) it "deleteDirRecursive, wrong file type (regular file)" $ - deleteDirRecursive' (specDir `ba` "file") + deleteDirRecursive' "file" `shouldThrow` (\e -> ioeGetErrorType e == InappropriateType) it "deleteDirRecursive, directory does not exist" $ - deleteDirRecursive' (specDir `ba` "doesNotExist") + deleteDirRecursive' "doesNotExist" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) diff --git a/test/HPath/IO/DeleteDirSpec.hs b/test/HPath/IO/DeleteDirSpec.hs index dd98bae..44d5b85 100644 --- a/test/HPath/IO/DeleteDirSpec.hs +++ b/test/HPath/IO/DeleteDirSpec.hs @@ -21,74 +21,88 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createRegularFile' "file" + createDir' "dir" + createRegularFile' "dir/.keep" + createSymlink' "dirSym" "dir/" + createDir' "noPerms" + createRegularFile' "noPerms/.keep" + createDir' "noWritable" + createRegularFile' "noWritable/.keep" -specDir :: BS.ByteString -specDir = "test/HPath/IO/deleteDirSpec/" -specDir' :: String -specDir' = toString specDir +cleanupFiles :: IO () +cleanupFiles = do + deleteFile' "file" + deleteFile' "dir/.keep" + deleteDir' "dir" + deleteFile' "dirSym" + deleteFile' "noPerms/.keep" + deleteDir' "noPerms" + deleteFile' "noWritable/.keep" + deleteDir' "noWritable" spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.deleteDir" $ do -- successes -- it "deleteDir, empty directory, all fine" $ do - createDir' (specDir `ba` "testDir") - deleteDir' (specDir `ba` "testDir") - getSymbolicLinkStatus (specDir `ba` "testDir") + createDir' "testDir" + deleteDir' "testDir" + getSymbolicLinkStatus "testDir" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "deleteDir, directory with null permissions, all fine" $ do - createDir' (specDir `ba` "noPerms/testDir") - noPerms (specDir `ba` "noPerms/testDir") - deleteDir' (specDir `ba` "noPerms/testDir") - getSymbolicLinkStatus (specDir `ba` "testDir") + createDir' "noPerms/testDir" + noPerms "noPerms/testDir" + deleteDir' "noPerms/testDir" + getSymbolicLinkStatus "testDir" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) -- posix failures -- it "deleteDir, wrong file type (symlink to directory)" $ - deleteDir' (specDir `ba` "dirSym") + deleteDir' "dirSym" `shouldThrow` (\e -> ioeGetErrorType e == InappropriateType) it "deleteDir, wrong file type (regular file)" $ - deleteDir' (specDir `ba` "file") + deleteDir' "file" `shouldThrow` (\e -> ioeGetErrorType e == InappropriateType) it "deleteDir, directory does not exist" $ - deleteDir' (specDir `ba` "doesNotExist") + deleteDir' "doesNotExist" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "deleteDir, directory not empty" $ - deleteDir' (specDir `ba` "dir") + deleteDir' "dir" `shouldThrow` (\e -> ioeGetErrorType e == UnsatisfiedConstraints) it "deleteDir, can't open parent directory" $ do - createDir' (specDir `ba` "noPerms/foo") - noPerms (specDir `ba` "noPerms") - (deleteDir' (specDir `ba` "noPerms/foo") + createDir' "noPerms/foo" + noPerms "noPerms" + (deleteDir' "noPerms/foo") `shouldThrow` - (\e -> ioeGetErrorType e == PermissionDenied)) - >> normalDirPerms (specDir `ba` "noPerms") - >> deleteDir' (specDir `ba` "noPerms/foo") + (\e -> ioeGetErrorType e == PermissionDenied) + normalDirPerms "noPerms" + deleteDir' "noPerms/foo" it "deleteDir, can't write to parent directory, still fine" $ do - createDir' (specDir `ba` "noWritable/foo") - noWritableDirPerms (specDir `ba` "noWritable") - (deleteDir' (specDir `ba` "noWritable/foo") + createDir' "noWritable/foo" + noWritableDirPerms "noWritable" + (deleteDir' "noWritable/foo") `shouldThrow` - (\e -> ioeGetErrorType e == PermissionDenied)) - normalDirPerms (specDir `ba` "noWritable") - deleteDir' (specDir `ba` "noWritable/foo") + (\e -> ioeGetErrorType e == PermissionDenied) + normalDirPerms "noWritable" + deleteDir' "noWritable/foo" diff --git a/test/HPath/IO/DeleteFileSpec.hs b/test/HPath/IO/DeleteFileSpec.hs index 6eb43e4..791a104 100644 --- a/test/HPath/IO/DeleteFileSpec.hs +++ b/test/HPath/IO/DeleteFileSpec.hs @@ -21,49 +21,58 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createRegularFile' "foo" + createSymlink' "syml" "foo" + createDir' "dir" + createDir' "noPerms" + noPerms "noPerms" -specDir :: BS.ByteString -specDir = "test/HPath/IO/deleteFileSpec/" -specDir' :: String -specDir' = toString specDir +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + deleteFile' "foo" + deleteFile' "syml" + deleteDir' "dir" + deleteDir' "noPerms" + spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.deleteFile" $ do -- successes -- it "deleteFile, regular file, all fine" $ do - createRegularFile' (specDir `ba` "testFile") - deleteFile' (specDir `ba` "testFile") - getSymbolicLinkStatus (specDir `ba` "testFile") + createRegularFile' "testFile" + deleteFile' "testFile" + getSymbolicLinkStatus "testFile" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "deleteFile, symlink, all fine" $ do - recreateSymlink' (specDir `ba` "syml") - (specDir `ba` "testFile") - deleteFile' (specDir `ba` "testFile") - getSymbolicLinkStatus (specDir `ba` "testFile") + recreateSymlink' "syml" + "testFile" + deleteFile' "testFile" + getSymbolicLinkStatus "testFile" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) -- posix failures -- it "deleteFile, wrong file type (directory)" $ - deleteFile' (specDir `ba` "dir") + deleteFile' "dir" `shouldThrow` (\e -> ioeGetErrorType e == InappropriateType) it "deleteFile, file does not exist" $ - deleteFile' (specDir `ba` "doesNotExist") + deleteFile' "doesNotExist" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "deleteFile, can't read directory" $ - deleteFile' (specDir `ba` "noPerms/blah") + deleteFile' "noPerms/blah" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) diff --git a/test/HPath/IO/GetDirsFilesSpec.hs b/test/HPath/IO/GetDirsFilesSpec.hs index 720c083..244e864 100644 --- a/test/HPath/IO/GetDirsFilesSpec.hs +++ b/test/HPath/IO/GetDirsFilesSpec.hs @@ -16,6 +16,7 @@ import Data.Maybe fromJust ) import qualified HPath as P +import HPath.IO import Test.Hspec import System.IO.Error ( @@ -34,56 +35,71 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createRegularFile' "file" + createRegularFile' "Lala" + createRegularFile' ".hidden" + createSymlink' "syml" "Lala" + createDir' "dir" + createSymlink' "dirsym" "dir" + createDir' "noPerms" + noPerms "noPerms" -specDir :: BS.ByteString -specDir = "test/HPath/IO/getDirsFilesSpec/" -specDir' :: String -specDir' = toString specDir +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + deleteFile' "file" + deleteFile' "Lala" + deleteFile' ".hidden" + deleteFile' "syml" + deleteDir' "dir" + deleteFile' "dirsym" + deleteDir' "noPerms" + spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.getDirsFiles" $ do -- successes -- - it "getDirsFiles, all fine" $ do - pwd <- fromJust <$> getEnv "PWD" >>= P.parseAbs - expectedFiles <- mapM P.parseRel [(specDir `ba ` ".hidden") - ,(specDir `ba ` "Lala") - ,(specDir `ba ` "dir") - ,(specDir `ba ` "dirsym") - ,(specDir `ba ` "file") - ,(specDir `ba ` "noPerms") - ,(specDir `ba ` "syml")] - (fmap sort $ getDirsFiles' specDir) - `shouldReturn` fmap (pwd P.) expectedFiles + it "getDirsFiles, all fine" $ + withRawTmpDir $ \p -> do + expectedFiles <- mapM P.parseRel [".hidden" + ,"Lala" + ,"dir" + ,"dirsym" + ,"file" + ,"noPerms" + ,"syml"] + (fmap sort $ getDirsFiles p) + `shouldReturn` fmap (p P.) expectedFiles -- posix failures -- it "getDirsFiles, nonexistent directory" $ - getDirsFiles' (specDir `ba ` "nothingHere") + getDirsFiles' "nothingHere" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "getDirsFiles, wrong file type (file)" $ - getDirsFiles' (specDir `ba ` "file") + getDirsFiles' "file" `shouldThrow` (\e -> ioeGetErrorType e == InappropriateType) it "getDirsFiles, wrong file type (symlink to file)" $ - getDirsFiles' (specDir `ba ` "syml") + getDirsFiles' "syml" `shouldThrow` (\e -> ioeGetErrorType e == InvalidArgument) it "getDirsFiles, wrong file type (symlink to dir)" $ - getDirsFiles' (specDir `ba ` "dirsym") + getDirsFiles' "dirsym" `shouldThrow` (\e -> ioeGetErrorType e == InvalidArgument) it "getDirsFiles, can't open directory" $ - getDirsFiles' (specDir `ba ` "noPerms") + getDirsFiles' "noPerms" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) diff --git a/test/HPath/IO/GetFileTypeSpec.hs b/test/HPath/IO/GetFileTypeSpec.hs index 2ca2074..b695490 100644 --- a/test/HPath/IO/GetFileTypeSpec.hs +++ b/test/HPath/IO/GetFileTypeSpec.hs @@ -18,53 +18,66 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createRegularFile' "regularfile" + createSymlink' "symlink" "regularfile" + createSymlink' "brokenSymlink" "broken" + createDir' "directory" + createSymlink' "symlinkD" "directory" + createDir' "noPerms" + noPerms "noPerms" -specDir :: BS.ByteString -specDir = "test/HPath/IO/getFileTypeSpec/" -specDir' :: String -specDir' = toString specDir +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + deleteFile' "regularfile" + deleteFile' "symlink" + deleteFile' "brokenSymlink" + deleteDir' "directory" + deleteFile' "symlinkD" + deleteDir' "noPerms" + spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.getFileType" $ do -- successes -- it "getFileType, regular file" $ - getFileType' (specDir `ba` "regularfile") + getFileType' "regularfile" `shouldReturn` RegularFile it "getFileType, directory" $ - getFileType' (specDir `ba` "directory") + getFileType' "directory" `shouldReturn` Directory it "getFileType, directory with null permissions" $ - getFileType' (specDir `ba` "noPerms") + getFileType' "noPerms" `shouldReturn` Directory it "getFileType, symlink to file" $ - getFileType' (specDir `ba` "symlink") + getFileType' "symlink" `shouldReturn` SymbolicLink it "getFileType, symlink to directory" $ - getFileType' (specDir `ba` "symlinkD") + getFileType' "symlinkD" `shouldReturn` SymbolicLink it "getFileType, broken symlink" $ - getFileType' (specDir `ba` "brokenSymlink") + getFileType' "brokenSymlink" `shouldReturn` SymbolicLink -- posix failures -- it "getFileType, file does not exist" $ - getFileType' (specDir `ba` "nothingHere") + getFileType' "nothingHere" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "getFileType, can't open directory" $ - getFileType' (specDir `ba` "noPerms/forz") + getFileType' "noPerms/forz" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) diff --git a/test/HPath/IO/MoveFileOverwriteSpec.hs b/test/HPath/IO/MoveFileOverwriteSpec.hs index bbaaa80..8f2cef8 100644 --- a/test/HPath/IO/MoveFileOverwriteSpec.hs +++ b/test/HPath/IO/MoveFileOverwriteSpec.hs @@ -18,76 +18,92 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createRegularFile' "myFile" + createSymlink' "myFileL" "myFile" + createDir' "alreadyExistsD" + createDir' "dir" + createDir' "noPerms" + createDir' "noWritePerm" + noPerms "noPerms" + noWritableDirPerms "noWritePerm" + writeFile' "myFile" "Blahfaselgagaga" -specDir :: BS.ByteString -specDir = "test/HPath/IO/moveFileOverwriteSpec/" -specDir' :: String -specDir' = toString specDir +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + normalDirPerms "noWritePerm" + deleteFile' "myFile" + deleteFile' "myFileL" + deleteDir' "alreadyExistsD" + deleteDir' "dir" + deleteDir' "noPerms" + deleteDir' "noWritePerm" + spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.moveFileOverwrite" $ do -- successes -- it "moveFileOverwrite, all fine" $ - moveFileOverwrite' (specDir `ba` "myFile") - (specDir `ba` "movedFile") + moveFileOverwrite' "myFile" + "movedFile" it "moveFileOverwrite, all fine" $ - moveFileOverwrite' (specDir `ba` "myFile") - (specDir `ba` "dir/movedFile") + moveFileOverwrite' "myFile" + "dir/movedFile" it "moveFileOverwrite, all fine on symlink" $ - moveFileOverwrite' (specDir `ba` "myFileL") - (specDir `ba` "movedFile") + moveFileOverwrite' "myFileL" + "movedFile" it "moveFileOverwrite, all fine on directory" $ - moveFileOverwrite' (specDir `ba` "dir") - (specDir `ba` "movedFile") + moveFileOverwrite' "dir" + "movedFile" it "moveFileOverwrite, destination file already exists" $ - moveFileOverwrite' (specDir `ba` "myFile") - (specDir `ba` "alreadyExists") + moveFileOverwrite' "myFile" + "alreadyExists" -- posix failures -- it "moveFileOverwrite, source file does not exist" $ - moveFileOverwrite' (specDir `ba` "fileDoesNotExist") - (specDir `ba` "movedFile") + moveFileOverwrite' "fileDoesNotExist" + "movedFile" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "moveFileOverwrite, can't write to destination directory" $ - moveFileOverwrite' (specDir `ba` "myFile") - (specDir `ba` "noWritePerm/movedFile") + moveFileOverwrite' "myFile" + "noWritePerm/movedFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "moveFileOverwrite, can't open destination directory" $ - moveFileOverwrite' (specDir `ba` "myFile") - (specDir `ba` "noPerms/movedFile") + moveFileOverwrite' "myFile" + "noPerms/movedFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "moveFileOverwrite, can't open source directory" $ - moveFileOverwrite' (specDir `ba` "noPerms/myFile") - (specDir `ba` "movedFile") + moveFileOverwrite' "noPerms/myFile" + "movedFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) -- custom failures -- it "moveFileOverwrite, move from file to dir" $ - moveFileOverwrite' (specDir `ba` "myFile") - (specDir `ba` "alreadyExistsD") + moveFileOverwrite' "myFile" + "alreadyExistsD" `shouldThrow` isDirDoesExist it "moveFileOverwrite, source and dest are same file" $ - moveFileOverwrite' (specDir `ba` "myFile") - (specDir `ba` "myFile") + moveFileOverwrite' "myFile" + "myFile" `shouldThrow` isSameFile diff --git a/test/HPath/IO/MoveFileSpec.hs b/test/HPath/IO/MoveFileSpec.hs index 95923a9..0bf88fc 100644 --- a/test/HPath/IO/MoveFileSpec.hs +++ b/test/HPath/IO/MoveFileSpec.hs @@ -18,78 +18,96 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createRegularFile' "myFile" + createSymlink' "myFileL" "myFile" + createRegularFile' "alreadyExists" + createDir' "alreadyExistsD" + createDir' "dir" + createDir' "noPerms" + createDir' "noWritePerm" + noPerms "noPerms" + noWritableDirPerms "noWritePerm" + writeFile' "myFile" "Blahfaselgagaga" -specDir :: BS.ByteString -specDir = "test/HPath/IO/moveFileSpec/" -specDir' :: String -specDir' = toString specDir +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + normalDirPerms "noWritePerm" + deleteFile' "myFile" + deleteFile' "myFileL" + deleteFile' "alreadyExists" + deleteDir' "alreadyExistsD" + deleteDir' "dir" + deleteDir' "noPerms" + deleteDir' "noWritePerm" + spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.moveFile" $ do -- successes -- it "moveFile, all fine" $ - moveFile' (specDir `ba` "myFile") - (specDir `ba` "movedFile") + moveFile' "myFile" + "movedFile" it "moveFile, all fine" $ - moveFile' (specDir `ba` "myFile") - (specDir `ba` "dir/movedFile") + moveFile' "myFile" + "dir/movedFile" it "moveFile, all fine on symlink" $ - moveFile' (specDir `ba` "myFileL") - (specDir `ba` "movedFile") + moveFile' "myFileL" + "movedFile" it "moveFile, all fine on directory" $ - moveFile' (specDir `ba` "dir") - (specDir `ba` "movedFile") + moveFile' "dir" + "movedFile" -- posix failures -- it "moveFile, source file does not exist" $ - moveFile' (specDir `ba` "fileDoesNotExist") - (specDir `ba` "movedFile") + moveFile' "fileDoesNotExist" + "movedFile" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "moveFile, can't write to destination directory" $ - moveFile' (specDir `ba` "myFile") - (specDir `ba` "noWritePerm/movedFile") + moveFile' "myFile" + "noWritePerm/movedFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "moveFile, can't open destination directory" $ - moveFile' (specDir `ba` "myFile") - (specDir `ba` "noPerms/movedFile") + moveFile' "myFile" + "noPerms/movedFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "moveFile, can't open source directory" $ - moveFile' (specDir `ba` "noPerms/myFile") - (specDir `ba` "movedFile") + moveFile' "noPerms/myFile" + "movedFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) -- custom failures -- it "moveFile, destination file already exists" $ - moveFile' (specDir `ba` "myFile") - (specDir `ba` "alreadyExists") + moveFile' "myFile" + "alreadyExists" `shouldThrow` isFileDoesExist it "moveFile, move from file to dir" $ - moveFile' (specDir `ba` "myFile") - (specDir `ba` "alreadyExistsD") + moveFile' "myFile" + "alreadyExistsD" `shouldThrow` isDirDoesExist it "moveFile, source and dest are same file" $ - moveFile' (specDir `ba` "myFile") - (specDir `ba` "myFile") + moveFile' "myFile" + "myFile" `shouldThrow` isSameFile diff --git a/test/HPath/IO/RecreateSymlinkSpec.hs b/test/HPath/IO/RecreateSymlinkSpec.hs index 2ea8351..e55ea16 100644 --- a/test/HPath/IO/RecreateSymlinkSpec.hs +++ b/test/HPath/IO/RecreateSymlinkSpec.hs @@ -18,78 +18,95 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createRegularFile' "myFile" + createSymlink' "myFileL" "myFile" + createRegularFile' "alreadyExists" + createDir' "alreadyExistsD" + createDir' "dir" + createDir' "noPerms" + createDir' "noWritePerm" + noPerms "noPerms" + noWritableDirPerms "noWritePerm" + writeFile' "myFile" "Blahfaselgagaga" -specDir :: BS.ByteString -specDir = "test/HPath/IO/recreateSymlinkSpec/" -specDir' :: String -specDir' = toString specDir +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + normalDirPerms "noWritePerm" + deleteFile' "myFile" + deleteFile' "myFileL" + deleteFile' "alreadyExists" + deleteDir' "alreadyExistsD" + deleteDir' "dir" + deleteDir' "noPerms" + deleteDir' "noWritePerm" spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.recreateSymlink" $ do -- successes -- it "recreateSymLink, all fine" $ do - recreateSymlink' (specDir `ba` "myFileL") - (specDir `ba` "movedFile") - removeFileIfExists (specDir `ba` "movedFile") + recreateSymlink' "myFileL" + "movedFile" + removeFileIfExists "movedFile" it "recreateSymLink, all fine" $ do - recreateSymlink' (specDir `ba` "myFileL") - (specDir `ba` "dir/movedFile") - removeFileIfExists (specDir `ba` "dir/movedFile") + recreateSymlink' "myFileL" + "dir/movedFile" + removeFileIfExists "dir/movedFile" -- posix failures -- it "recreateSymLink, wrong input type (file)" $ - recreateSymlink' (specDir `ba` "myFile") - (specDir `ba` "movedFile") + recreateSymlink' "myFile" + "movedFile" `shouldThrow` (\e -> ioeGetErrorType e == InvalidArgument) it "recreateSymLink, wrong input type (directory)" $ - recreateSymlink' (specDir `ba` "dir") - (specDir `ba` "movedFile") + recreateSymlink' "dir" + "movedFile" `shouldThrow` (\e -> ioeGetErrorType e == InvalidArgument) it "recreateSymLink, can't write to destination directory" $ - recreateSymlink' (specDir `ba` "myFileL") - (specDir `ba` "noWritePerm/movedFile") + recreateSymlink' "myFileL" + "noWritePerm/movedFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "recreateSymLink, can't open destination directory" $ - recreateSymlink' (specDir `ba` "myFileL") - (specDir `ba` "noPerms/movedFile") + recreateSymlink' "myFileL" + "noPerms/movedFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "recreateSymLink, can't open source directory" $ - recreateSymlink' (specDir `ba` "noPerms/myFileL") - (specDir `ba` "movedFile") + recreateSymlink' "noPerms/myFileL" + "movedFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "recreateSymLink, destination file already exists" $ - recreateSymlink' (specDir `ba` "myFileL") - (specDir `ba` "alreadyExists") + recreateSymlink' "myFileL" + "alreadyExists" `shouldThrow` (\e -> ioeGetErrorType e == AlreadyExists) it "recreateSymLink, destination already exists and is a dir" $ - recreateSymlink' (specDir `ba` "myFileL") - (specDir `ba` "alreadyExistsD") + recreateSymlink' "myFileL" + "alreadyExistsD" `shouldThrow` (\e -> ioeGetErrorType e == AlreadyExists) -- custom failures -- it "recreateSymLink, source and destination are the same file" $ - recreateSymlink' (specDir `ba` "myFileL") - (specDir `ba` "myFileL") + recreateSymlink' "myFileL" + "myFileL" `shouldThrow` isSameFile diff --git a/test/HPath/IO/RenameFileSpec.hs b/test/HPath/IO/RenameFileSpec.hs index 1580ad7..5aad134 100644 --- a/test/HPath/IO/RenameFileSpec.hs +++ b/test/HPath/IO/RenameFileSpec.hs @@ -18,78 +18,95 @@ import qualified Data.ByteString as BS import Data.ByteString.UTF8 (toString) -ba :: BS.ByteString -> BS.ByteString -> BS.ByteString -ba = BS.append +setupFiles :: IO () +setupFiles = do + createRegularFile' "myFile" + createSymlink' "myFileL" "myFile" + createRegularFile' "alreadyExists" + createDir' "alreadyExistsD" + createDir' "dir" + createDir' "noPerms" + createDir' "noWritePerm" + noPerms "noPerms" + noWritableDirPerms "noWritePerm" + writeFile' "myFile" "Blahfaselgagaga" -specDir :: BS.ByteString -specDir = "test/HPath/IO/renameFileSpec/" -specDir' :: String -specDir' = toString specDir +cleanupFiles :: IO () +cleanupFiles = do + normalDirPerms "noPerms" + normalDirPerms "noWritePerm" + deleteFile' "myFile" + deleteFile' "myFileL" + deleteFile' "alreadyExists" + deleteDir' "alreadyExistsD" + deleteDir' "dir" + deleteDir' "noPerms" + deleteDir' "noWritePerm" spec :: Spec -spec = +spec = before_ setupFiles $ after_ cleanupFiles $ describe "HPath.IO.renameFile" $ do -- successes -- it "renameFile, all fine" $ - renameFile' (specDir `ba` "myFile") - (specDir `ba` "renamedFile") + renameFile' "myFile" + "renamedFile" it "renameFile, all fine" $ - renameFile' (specDir `ba` "myFile") - (specDir `ba` "dir/renamedFile") + renameFile' "myFile" + "dir/renamedFile" it "renameFile, all fine on symlink" $ - renameFile' (specDir `ba` "myFileL") - (specDir `ba` "renamedFile") + renameFile' "myFileL" + "renamedFile" it "renameFile, all fine on directory" $ - renameFile' (specDir `ba` "dir") - (specDir `ba` "renamedFile") + renameFile' "dir" + "renamedFile" -- posix failures -- it "renameFile, source file does not exist" $ - renameFile' (specDir `ba` "fileDoesNotExist") - (specDir `ba` "renamedFile") + renameFile' "fileDoesNotExist" + "renamedFile" `shouldThrow` (\e -> ioeGetErrorType e == NoSuchThing) it "renameFile, can't write to output directory" $ - renameFile' (specDir `ba` "myFile") - (specDir `ba` "noWritePerm/renamedFile") + renameFile' "myFile" + "noWritePerm/renamedFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "renameFile, can't open output directory" $ - renameFile' (specDir `ba` "myFile") - (specDir `ba` "noPerms/renamedFile") + renameFile' "myFile" + "noPerms/renamedFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) it "renameFile, can't open source directory" $ - renameFile' (specDir `ba` "noPerms/myFile") - (specDir `ba` "renamedFile") + renameFile' "noPerms/myFile" + "renamedFile" `shouldThrow` (\e -> ioeGetErrorType e == PermissionDenied) -- custom failures -- it "renameFile, destination file already exists" $ - renameFile' (specDir `ba` "myFile") - (specDir `ba` "alreadyExists") + renameFile' "myFile" + "alreadyExists" `shouldThrow` isFileDoesExist it "renameFile, move from file to dir" $ - renameFile' (specDir `ba` "myFile") - (specDir `ba` "alreadyExistsD") + renameFile' "myFile" + "alreadyExistsD" `shouldThrow` isDirDoesExist it "renameFile, source and dest are same file" $ - renameFile' (specDir `ba` "myFile") - (specDir `ba` "myFile") + renameFile' "myFile" + "myFile" `shouldThrow` isSameFile diff --git a/test/HPath/IO/canonicalizePathSpec/brokenSym b/test/HPath/IO/canonicalizePathSpec/brokenSym deleted file mode 120000 index 97896a0..0000000 --- a/test/HPath/IO/canonicalizePathSpec/brokenSym +++ /dev/null @@ -1 +0,0 @@ -nothing \ No newline at end of file diff --git a/test/HPath/IO/canonicalizePathSpec/dir/.keep b/test/HPath/IO/canonicalizePathSpec/dir/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/canonicalizePathSpec/dirSym b/test/HPath/IO/canonicalizePathSpec/dirSym deleted file mode 120000 index 8724519..0000000 --- a/test/HPath/IO/canonicalizePathSpec/dirSym +++ /dev/null @@ -1 +0,0 @@ -dir \ No newline at end of file diff --git a/test/HPath/IO/canonicalizePathSpec/file b/test/HPath/IO/canonicalizePathSpec/file deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/canonicalizePathSpec/fileSym b/test/HPath/IO/canonicalizePathSpec/fileSym deleted file mode 120000 index 1a010b1..0000000 --- a/test/HPath/IO/canonicalizePathSpec/fileSym +++ /dev/null @@ -1 +0,0 @@ -file \ No newline at end of file diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExists b/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExists deleted file mode 100755 index e69de29..0000000 diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/.keep b/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/bar/inputFile3 b/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/bar/inputFile3 deleted file mode 100644 index 8b2f378..0000000 --- a/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/bar/inputFile3 +++ /dev/null @@ -1,8 +0,0 @@ -dadasasddas -sda - -!!1 -sda - - -11 diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/foo/inputFile1 b/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/foo/inputFile1 deleted file mode 100644 index 31c5074..0000000 --- a/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/foo/inputFile1 +++ /dev/null @@ -1 +0,0 @@ -dadasasddas diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/inputFile2 b/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/inputFile2 deleted file mode 100644 index 1eed72f..0000000 --- a/test/HPath/IO/copyDirRecursiveOverwriteSpec/alreadyExistsD/inputFile2 +++ /dev/null @@ -1,4 +0,0 @@ -dadasasddas -das -sda -sda diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/inputDir/bar/inputFile3 b/test/HPath/IO/copyDirRecursiveOverwriteSpec/inputDir/bar/inputFile3 deleted file mode 100644 index 8b2f378..0000000 --- a/test/HPath/IO/copyDirRecursiveOverwriteSpec/inputDir/bar/inputFile3 +++ /dev/null @@ -1,8 +0,0 @@ -dadasasddas -sda - -!!1 -sda - - -11 diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/inputDir/foo/inputFile1 b/test/HPath/IO/copyDirRecursiveOverwriteSpec/inputDir/foo/inputFile1 deleted file mode 100644 index 31c5074..0000000 --- a/test/HPath/IO/copyDirRecursiveOverwriteSpec/inputDir/foo/inputFile1 +++ /dev/null @@ -1 +0,0 @@ -dadasasddas diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/inputDir/inputFile2 b/test/HPath/IO/copyDirRecursiveOverwriteSpec/inputDir/inputFile2 deleted file mode 100644 index 1eed72f..0000000 --- a/test/HPath/IO/copyDirRecursiveOverwriteSpec/inputDir/inputFile2 +++ /dev/null @@ -1,4 +0,0 @@ -dadasasddas -das -sda -sda diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms/inputDir/bar/inputFile3 b/test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms/inputDir/bar/inputFile3 deleted file mode 100644 index 8b2f378..0000000 --- a/test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms/inputDir/bar/inputFile3 +++ /dev/null @@ -1,8 +0,0 @@ -dadasasddas -sda - -!!1 -sda - - -11 diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms/inputDir/foo/inputFile1 b/test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms/inputDir/foo/inputFile1 deleted file mode 100644 index 31c5074..0000000 --- a/test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms/inputDir/foo/inputFile1 +++ /dev/null @@ -1 +0,0 @@ -dadasasddas diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms/inputDir/inputFile2 b/test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms/inputDir/inputFile2 deleted file mode 100644 index 1eed72f..0000000 --- a/test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms/inputDir/inputFile2 +++ /dev/null @@ -1,4 +0,0 @@ -dadasasddas -das -sda -sda diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/noWritePerm/.keep b/test/HPath/IO/copyDirRecursiveOverwriteSpec/noWritePerm/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/wrongInput b/test/HPath/IO/copyDirRecursiveOverwriteSpec/wrongInput deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyDirRecursiveOverwriteSpec/wrongInputSymL b/test/HPath/IO/copyDirRecursiveOverwriteSpec/wrongInputSymL deleted file mode 120000 index e722311..0000000 --- a/test/HPath/IO/copyDirRecursiveOverwriteSpec/wrongInputSymL +++ /dev/null @@ -1 +0,0 @@ -inputDir/ \ No newline at end of file diff --git a/test/HPath/IO/copyDirRecursiveSpec/alreadyExists b/test/HPath/IO/copyDirRecursiveSpec/alreadyExists deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyDirRecursiveSpec/alreadyExistsD/.keep b/test/HPath/IO/copyDirRecursiveSpec/alreadyExistsD/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyDirRecursiveSpec/inputDir/bar/inputFile3 b/test/HPath/IO/copyDirRecursiveSpec/inputDir/bar/inputFile3 deleted file mode 100644 index 8b2f378..0000000 --- a/test/HPath/IO/copyDirRecursiveSpec/inputDir/bar/inputFile3 +++ /dev/null @@ -1,8 +0,0 @@ -dadasasddas -sda - -!!1 -sda - - -11 diff --git a/test/HPath/IO/copyDirRecursiveSpec/inputDir/foo/inputFile1 b/test/HPath/IO/copyDirRecursiveSpec/inputDir/foo/inputFile1 deleted file mode 100644 index 31c5074..0000000 --- a/test/HPath/IO/copyDirRecursiveSpec/inputDir/foo/inputFile1 +++ /dev/null @@ -1 +0,0 @@ -dadasasddas diff --git a/test/HPath/IO/copyDirRecursiveSpec/inputDir/inputFile2 b/test/HPath/IO/copyDirRecursiveSpec/inputDir/inputFile2 deleted file mode 100644 index 1eed72f..0000000 --- a/test/HPath/IO/copyDirRecursiveSpec/inputDir/inputFile2 +++ /dev/null @@ -1,4 +0,0 @@ -dadasasddas -das -sda -sda diff --git a/test/HPath/IO/copyDirRecursiveSpec/noPerms/inputDir/bar/inputFile3 b/test/HPath/IO/copyDirRecursiveSpec/noPerms/inputDir/bar/inputFile3 deleted file mode 100644 index 8b2f378..0000000 --- a/test/HPath/IO/copyDirRecursiveSpec/noPerms/inputDir/bar/inputFile3 +++ /dev/null @@ -1,8 +0,0 @@ -dadasasddas -sda - -!!1 -sda - - -11 diff --git a/test/HPath/IO/copyDirRecursiveSpec/noPerms/inputDir/foo/inputFile1 b/test/HPath/IO/copyDirRecursiveSpec/noPerms/inputDir/foo/inputFile1 deleted file mode 100644 index 31c5074..0000000 --- a/test/HPath/IO/copyDirRecursiveSpec/noPerms/inputDir/foo/inputFile1 +++ /dev/null @@ -1 +0,0 @@ -dadasasddas diff --git a/test/HPath/IO/copyDirRecursiveSpec/noPerms/inputDir/inputFile2 b/test/HPath/IO/copyDirRecursiveSpec/noPerms/inputDir/inputFile2 deleted file mode 100644 index 1eed72f..0000000 --- a/test/HPath/IO/copyDirRecursiveSpec/noPerms/inputDir/inputFile2 +++ /dev/null @@ -1,4 +0,0 @@ -dadasasddas -das -sda -sda diff --git a/test/HPath/IO/copyDirRecursiveSpec/noWritePerm/.keep b/test/HPath/IO/copyDirRecursiveSpec/noWritePerm/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyDirRecursiveSpec/wrongInput b/test/HPath/IO/copyDirRecursiveSpec/wrongInput deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyDirRecursiveSpec/wrongInputSymL b/test/HPath/IO/copyDirRecursiveSpec/wrongInputSymL deleted file mode 120000 index e722311..0000000 --- a/test/HPath/IO/copyDirRecursiveSpec/wrongInputSymL +++ /dev/null @@ -1 +0,0 @@ -inputDir/ \ No newline at end of file diff --git a/test/HPath/IO/copyFileOverwriteSpec/alreadyExists b/test/HPath/IO/copyFileOverwriteSpec/alreadyExists deleted file mode 100644 index d7d35c0..0000000 --- a/test/HPath/IO/copyFileOverwriteSpec/alreadyExists +++ /dev/null @@ -1,16 +0,0 @@ -adaöölsdaöl -dsalö -ölsda -ääödsf -äsdfä -öä453 -öä -435 -ä45343 -5 -453 -453453453 -das -asd -das - diff --git a/test/HPath/IO/copyFileOverwriteSpec/alreadyExistsD/.keep b/test/HPath/IO/copyFileOverwriteSpec/alreadyExistsD/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyFileOverwriteSpec/inputFile b/test/HPath/IO/copyFileOverwriteSpec/inputFile deleted file mode 100644 index 87bf7bc..0000000 --- a/test/HPath/IO/copyFileOverwriteSpec/inputFile +++ /dev/null @@ -1,4 +0,0 @@ -abc -def - -dsadasdsa diff --git a/test/HPath/IO/copyFileOverwriteSpec/inputFileSymL b/test/HPath/IO/copyFileOverwriteSpec/inputFileSymL deleted file mode 120000 index 55529d2..0000000 --- a/test/HPath/IO/copyFileOverwriteSpec/inputFileSymL +++ /dev/null @@ -1 +0,0 @@ -inputFile \ No newline at end of file diff --git a/test/HPath/IO/copyFileOverwriteSpec/noPerms/inputFile b/test/HPath/IO/copyFileOverwriteSpec/noPerms/inputFile deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyFileOverwriteSpec/outputDirNoWrite/.keep b/test/HPath/IO/copyFileOverwriteSpec/outputDirNoWrite/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyFileOverwriteSpec/wrongInput/.keep b/test/HPath/IO/copyFileOverwriteSpec/wrongInput/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyFileSpec/alreadyExists b/test/HPath/IO/copyFileSpec/alreadyExists deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyFileSpec/alreadyExistsD/.keep b/test/HPath/IO/copyFileSpec/alreadyExistsD/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyFileSpec/inputFile b/test/HPath/IO/copyFileSpec/inputFile deleted file mode 100644 index 5f5521f..0000000 --- a/test/HPath/IO/copyFileSpec/inputFile +++ /dev/null @@ -1,2 +0,0 @@ -abc -def diff --git a/test/HPath/IO/copyFileSpec/inputFileSymL b/test/HPath/IO/copyFileSpec/inputFileSymL deleted file mode 120000 index 55529d2..0000000 --- a/test/HPath/IO/copyFileSpec/inputFileSymL +++ /dev/null @@ -1 +0,0 @@ -inputFile \ No newline at end of file diff --git a/test/HPath/IO/copyFileSpec/noPerms/inputFile b/test/HPath/IO/copyFileSpec/noPerms/inputFile deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyFileSpec/outputDirNoWrite/.keep b/test/HPath/IO/copyFileSpec/outputDirNoWrite/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/copyFileSpec/wrongInput/.keep b/test/HPath/IO/copyFileSpec/wrongInput/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/createDirSpec/.keep b/test/HPath/IO/createDirSpec/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/createDirSpec/alreadyExists/.keep b/test/HPath/IO/createDirSpec/alreadyExists/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/createDirSpec/noPerms/.keep b/test/HPath/IO/createDirSpec/noPerms/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/createDirSpec/noWritePerms/.keep b/test/HPath/IO/createDirSpec/noWritePerms/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/createRegularFileSpec/alreadyExists b/test/HPath/IO/createRegularFileSpec/alreadyExists deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/createRegularFileSpec/noPerms/.keep b/test/HPath/IO/createRegularFileSpec/noPerms/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/createRegularFileSpec/noWritePerms/.keep b/test/HPath/IO/createRegularFileSpec/noWritePerms/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteDirRecursiveSpec/.keep b/test/HPath/IO/deleteDirRecursiveSpec/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteDirRecursiveSpec/dir/.keep b/test/HPath/IO/deleteDirRecursiveSpec/dir/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteDirRecursiveSpec/dirSym b/test/HPath/IO/deleteDirRecursiveSpec/dirSym deleted file mode 120000 index 8724519..0000000 --- a/test/HPath/IO/deleteDirRecursiveSpec/dirSym +++ /dev/null @@ -1 +0,0 @@ -dir \ No newline at end of file diff --git a/test/HPath/IO/deleteDirRecursiveSpec/file b/test/HPath/IO/deleteDirRecursiveSpec/file deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteDirRecursiveSpec/noPerms/.keep b/test/HPath/IO/deleteDirRecursiveSpec/noPerms/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteDirRecursiveSpec/noWritable/.keep b/test/HPath/IO/deleteDirRecursiveSpec/noWritable/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteDirSpec/.keep b/test/HPath/IO/deleteDirSpec/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteDirSpec/dir/.keep b/test/HPath/IO/deleteDirSpec/dir/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteDirSpec/dirSym b/test/HPath/IO/deleteDirSpec/dirSym deleted file mode 120000 index 8724519..0000000 --- a/test/HPath/IO/deleteDirSpec/dirSym +++ /dev/null @@ -1 +0,0 @@ -dir \ No newline at end of file diff --git a/test/HPath/IO/deleteDirSpec/file b/test/HPath/IO/deleteDirSpec/file deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteDirSpec/noPerms/.keep b/test/HPath/IO/deleteDirSpec/noPerms/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteDirSpec/noWritable/.keep b/test/HPath/IO/deleteDirSpec/noWritable/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteFileSpec/dir/.keep b/test/HPath/IO/deleteFileSpec/dir/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteFileSpec/foo b/test/HPath/IO/deleteFileSpec/foo deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteFileSpec/noPerms/blah b/test/HPath/IO/deleteFileSpec/noPerms/blah deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/deleteFileSpec/syml b/test/HPath/IO/deleteFileSpec/syml deleted file mode 120000 index 1910281..0000000 --- a/test/HPath/IO/deleteFileSpec/syml +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/test/HPath/IO/getDirsFilesSpec/.hidden b/test/HPath/IO/getDirsFilesSpec/.hidden deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/getDirsFilesSpec/Lala b/test/HPath/IO/getDirsFilesSpec/Lala deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/getDirsFilesSpec/dir/.keep b/test/HPath/IO/getDirsFilesSpec/dir/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/getDirsFilesSpec/dirsym b/test/HPath/IO/getDirsFilesSpec/dirsym deleted file mode 120000 index 8724519..0000000 --- a/test/HPath/IO/getDirsFilesSpec/dirsym +++ /dev/null @@ -1 +0,0 @@ -dir \ No newline at end of file diff --git a/test/HPath/IO/getDirsFilesSpec/file b/test/HPath/IO/getDirsFilesSpec/file deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/getDirsFilesSpec/noPerms/.keep b/test/HPath/IO/getDirsFilesSpec/noPerms/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/getDirsFilesSpec/syml b/test/HPath/IO/getDirsFilesSpec/syml deleted file mode 120000 index bbfbf8c..0000000 --- a/test/HPath/IO/getDirsFilesSpec/syml +++ /dev/null @@ -1 +0,0 @@ -Lala \ No newline at end of file diff --git a/test/HPath/IO/getFileTypeSpec/brokenSymlink b/test/HPath/IO/getFileTypeSpec/brokenSymlink deleted file mode 120000 index 86a410d..0000000 --- a/test/HPath/IO/getFileTypeSpec/brokenSymlink +++ /dev/null @@ -1 +0,0 @@ -broken \ No newline at end of file diff --git a/test/HPath/IO/getFileTypeSpec/directory/.keep b/test/HPath/IO/getFileTypeSpec/directory/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/getFileTypeSpec/noPerms/.keep b/test/HPath/IO/getFileTypeSpec/noPerms/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/getFileTypeSpec/regularfile b/test/HPath/IO/getFileTypeSpec/regularfile deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/getFileTypeSpec/symlink b/test/HPath/IO/getFileTypeSpec/symlink deleted file mode 120000 index 6a33ade..0000000 --- a/test/HPath/IO/getFileTypeSpec/symlink +++ /dev/null @@ -1 +0,0 @@ -regularfile \ No newline at end of file diff --git a/test/HPath/IO/getFileTypeSpec/symlinkD b/test/HPath/IO/getFileTypeSpec/symlinkD deleted file mode 120000 index 6d0450c..0000000 --- a/test/HPath/IO/getFileTypeSpec/symlinkD +++ /dev/null @@ -1 +0,0 @@ -directory \ No newline at end of file diff --git a/test/HPath/IO/moveFileOverwriteSpec/alreadyExistsD/.keep b/test/HPath/IO/moveFileOverwriteSpec/alreadyExistsD/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/moveFileOverwriteSpec/dir/.keep b/test/HPath/IO/moveFileOverwriteSpec/dir/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/moveFileOverwriteSpec/myFile b/test/HPath/IO/moveFileOverwriteSpec/myFile deleted file mode 100644 index 1f62e72..0000000 --- a/test/HPath/IO/moveFileOverwriteSpec/myFile +++ /dev/null @@ -1,4 +0,0 @@ -asd -sda - -sda diff --git a/test/HPath/IO/moveFileOverwriteSpec/myFileL b/test/HPath/IO/moveFileOverwriteSpec/myFileL deleted file mode 120000 index c97626f..0000000 --- a/test/HPath/IO/moveFileOverwriteSpec/myFileL +++ /dev/null @@ -1 +0,0 @@ -myFile \ No newline at end of file diff --git a/test/HPath/IO/moveFileOverwriteSpec/noPerms/myFile b/test/HPath/IO/moveFileOverwriteSpec/noPerms/myFile deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/moveFileOverwriteSpec/noWritePerm/.keep b/test/HPath/IO/moveFileOverwriteSpec/noWritePerm/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/moveFileSpec/alreadyExists b/test/HPath/IO/moveFileSpec/alreadyExists deleted file mode 100644 index 82a6fbd..0000000 --- a/test/HPath/IO/moveFileSpec/alreadyExists +++ /dev/null @@ -1,2 +0,0 @@ -dasklaksd -sda diff --git a/test/HPath/IO/moveFileSpec/alreadyExistsD/.keep b/test/HPath/IO/moveFileSpec/alreadyExistsD/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/moveFileSpec/dir/.keep b/test/HPath/IO/moveFileSpec/dir/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/moveFileSpec/myFile b/test/HPath/IO/moveFileSpec/myFile deleted file mode 100644 index 1f62e72..0000000 --- a/test/HPath/IO/moveFileSpec/myFile +++ /dev/null @@ -1,4 +0,0 @@ -asd -sda - -sda diff --git a/test/HPath/IO/moveFileSpec/myFileL b/test/HPath/IO/moveFileSpec/myFileL deleted file mode 120000 index c97626f..0000000 --- a/test/HPath/IO/moveFileSpec/myFileL +++ /dev/null @@ -1 +0,0 @@ -myFile \ No newline at end of file diff --git a/test/HPath/IO/moveFileSpec/noPerms/myFile b/test/HPath/IO/moveFileSpec/noPerms/myFile deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/moveFileSpec/noWritePerm/.keep b/test/HPath/IO/moveFileSpec/noWritePerm/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/recreateSymlinkSpec/alreadyExists b/test/HPath/IO/recreateSymlinkSpec/alreadyExists deleted file mode 100644 index f9c6694..0000000 --- a/test/HPath/IO/recreateSymlinkSpec/alreadyExists +++ /dev/null @@ -1,3 +0,0 @@ -asdl -dsa -sd diff --git a/test/HPath/IO/recreateSymlinkSpec/alreadyExistsD/.keep b/test/HPath/IO/recreateSymlinkSpec/alreadyExistsD/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/recreateSymlinkSpec/dir/.keep b/test/HPath/IO/recreateSymlinkSpec/dir/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/recreateSymlinkSpec/myFile b/test/HPath/IO/recreateSymlinkSpec/myFile deleted file mode 100644 index ee838ea..0000000 --- a/test/HPath/IO/recreateSymlinkSpec/myFile +++ /dev/null @@ -1,4 +0,0 @@ -ads -sad -das -sda diff --git a/test/HPath/IO/recreateSymlinkSpec/myFileL b/test/HPath/IO/recreateSymlinkSpec/myFileL deleted file mode 120000 index c97626f..0000000 --- a/test/HPath/IO/recreateSymlinkSpec/myFileL +++ /dev/null @@ -1 +0,0 @@ -myFile \ No newline at end of file diff --git a/test/HPath/IO/recreateSymlinkSpec/noPerms/myFile b/test/HPath/IO/recreateSymlinkSpec/noPerms/myFile deleted file mode 100644 index ee838ea..0000000 --- a/test/HPath/IO/recreateSymlinkSpec/noPerms/myFile +++ /dev/null @@ -1,4 +0,0 @@ -ads -sad -das -sda diff --git a/test/HPath/IO/recreateSymlinkSpec/noPerms/myFileL b/test/HPath/IO/recreateSymlinkSpec/noPerms/myFileL deleted file mode 120000 index c97626f..0000000 --- a/test/HPath/IO/recreateSymlinkSpec/noPerms/myFileL +++ /dev/null @@ -1 +0,0 @@ -myFile \ No newline at end of file diff --git a/test/HPath/IO/recreateSymlinkSpec/noWritePerm/.keep b/test/HPath/IO/recreateSymlinkSpec/noWritePerm/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/renameFileSpec/alreadyExists b/test/HPath/IO/renameFileSpec/alreadyExists deleted file mode 100644 index f9c6694..0000000 --- a/test/HPath/IO/renameFileSpec/alreadyExists +++ /dev/null @@ -1,3 +0,0 @@ -asdl -dsa -sd diff --git a/test/HPath/IO/renameFileSpec/alreadyExistsD/.keep b/test/HPath/IO/renameFileSpec/alreadyExistsD/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/renameFileSpec/dir/.keep b/test/HPath/IO/renameFileSpec/dir/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/renameFileSpec/myFile b/test/HPath/IO/renameFileSpec/myFile deleted file mode 100644 index ee838ea..0000000 --- a/test/HPath/IO/renameFileSpec/myFile +++ /dev/null @@ -1,4 +0,0 @@ -ads -sad -das -sda diff --git a/test/HPath/IO/renameFileSpec/myFileL b/test/HPath/IO/renameFileSpec/myFileL deleted file mode 120000 index c97626f..0000000 --- a/test/HPath/IO/renameFileSpec/myFileL +++ /dev/null @@ -1 +0,0 @@ -myFile \ No newline at end of file diff --git a/test/HPath/IO/renameFileSpec/noPerms/myFile b/test/HPath/IO/renameFileSpec/noPerms/myFile deleted file mode 100644 index e69de29..0000000 diff --git a/test/HPath/IO/renameFileSpec/noWritePerm/.keep b/test/HPath/IO/renameFileSpec/noWritePerm/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/test/Main.hs b/test/Main.hs index 2d78dcf..5115f19 100644 --- a/test/Main.hs +++ b/test/Main.hs @@ -13,41 +13,11 @@ import Utils main :: IO () main = hspecWith - defaultConfig { configFormatter = Just progress } - $ before_ fixPermissions - $ after_ revertPermissions - $ Spec.spec >> Spec.spec + defaultConfig { configFormatter = Just specdoc } + $ before_ up + $ after_ down + $ Spec.spec where - noWriteDirs = ["test/HPath/IO/copyFileSpec/outputDirNoWrite" - ,"test/HPath/IO/copyFileOverwriteSpec/outputDirNoWrite" - ,"test/HPath/IO/copyDirRecursiveSpec/noWritePerm" - ,"test/HPath/IO/copyDirRecursiveOverwriteSpec/noWritePerm" - ,"test/HPath/IO/createDirSpec/noWritePerms" - ,"test/HPath/IO/createRegularFileSpec/noWritePerms" - ,"test/HPath/IO/renameFileSpec/noWritePerm" - ,"test/HPath/IO/moveFileSpec/noWritePerm" - ,"test/HPath/IO/moveFileOverwriteSpec/noWritePerm" - ,"test/HPath/IO/recreateSymlinkSpec/noWritePerm" - ] - noPermsDirs = ["test/HPath/IO/copyFileSpec/noPerms" - ,"test/HPath/IO/copyFileOverwriteSpec/noPerms" - ,"test/HPath/IO/copyDirRecursiveSpec/noPerms" - ,"test/HPath/IO/copyDirRecursiveOverwriteSpec/noPerms" - ,"test/HPath/IO/createDirSpec/noPerms" - ,"test/HPath/IO/createRegularFileSpec/noPerms" - ,"test/HPath/IO/renameFileSpec/noPerms" - ,"test/HPath/IO/moveFileSpec/noPerms" - ,"test/HPath/IO/moveFileOverwriteSpec/noPerms" - ,"test/HPath/IO/recreateSymlinkSpec/noPerms" - ,"test/HPath/IO/getFileTypeSpec/noPerms" - ,"test/HPath/IO/getDirsFilesSpec/noPerms" - ,"test/HPath/IO/deleteFileSpec/noPerms" - ] - fixPermissions = do - sequence_ $ fmap noWritableDirPerms noWriteDirs - sequence_ $ fmap noPerms noPermsDirs - revertPermissions = do - sequence_ $ fmap normalDirPerms noWriteDirs - sequence_ $ fmap normalDirPerms noPermsDirs - + up = createTmpDir + down = deleteTmpDir diff --git a/test/Utils.hs b/test/Utils.hs index 8b252ff..6e8739d 100644 --- a/test/Utils.hs +++ b/test/Utils.hs @@ -1,4 +1,6 @@ {-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE PackageImports #-} + module Utils where @@ -7,6 +9,10 @@ import Control.Applicative ( (<$>) ) +import Control.Monad + ( + void + ) import HPath.IO import HPath.IO.Errors import HPath.IO.Utils @@ -36,6 +42,14 @@ import System.Posix.Files.ByteString , unionFileModes ) +import qualified "unix" System.Posix.IO.ByteString as SPI +import qualified "unix-bytestring" System.Posix.IO.ByteString as SPB + + + +tmpDir :: ByteString +tmpDir = "test/HPath/IO/tmp/" + ----------------- @@ -43,90 +57,118 @@ import System.Posix.Files.ByteString ----------------- -withPwd :: ByteString -> (P.Path P.Abs -> IO a) -> IO a -withPwd ip f = do +createTmpDir :: IO () +createTmpDir = do pwd <- fromJust <$> getEnv "PWD" >>= P.parseAbs - p <- (pwd P.) <$> P.parseRel ip + tmp <- P.parseRel tmpDir + void $ createDir (pwd P. tmp) + + +deleteTmpDir :: IO () +deleteTmpDir = do + pwd <- fromJust <$> getEnv "PWD" >>= P.parseAbs + tmp <- P.parseRel tmpDir + void $ deleteDir (pwd P. tmp) + + +withRawTmpDir :: (P.Path P.Abs -> IO a) -> IO a +withRawTmpDir f = do + pwd <- fromJust <$> getEnv "PWD" >>= P.parseAbs + tmp <- P.parseRel tmpDir + f (pwd P. tmp) + + +withTmpDir :: ByteString -> (P.Path P.Abs -> IO a) -> IO a +withTmpDir ip f = do + pwd <- fromJust <$> getEnv "PWD" >>= P.parseAbs + tmp <- P.parseRel tmpDir + p <- (pwd P. tmp P.) <$> P.parseRel ip f p -withPwd' :: ByteString - -> ByteString - -> (P.Path P.Abs -> P.Path P.Abs -> IO a) - -> IO a -withPwd' ip1 ip2 f = do +withTmpDir' :: ByteString + -> ByteString + -> (P.Path P.Abs -> P.Path P.Abs -> IO a) + -> IO a +withTmpDir' ip1 ip2 f = do pwd <- fromJust <$> getEnv "PWD" >>= P.parseAbs - p1 <- (pwd P.) <$> P.parseRel ip1 - p2 <- (pwd P.) <$> P.parseRel ip2 + tmp <- P.parseRel tmpDir + p1 <- (pwd P. tmp P.) <$> P.parseRel ip1 + p2 <- (pwd P. tmp P.) <$> P.parseRel ip2 f p1 p2 removeFileIfExists :: ByteString -> IO () removeFileIfExists bs = - withPwd bs $ \p -> whenM (doesFileExist p) (deleteFile p) + withTmpDir bs $ \p -> whenM (doesFileExist p) (deleteFile p) removeDirIfExists :: ByteString -> IO () removeDirIfExists bs = - withPwd bs $ \p -> whenM (doesDirectoryExist p) (deleteDirRecursive p) + withTmpDir bs $ \p -> whenM (doesDirectoryExist p) (deleteDirRecursive p) copyFile' :: ByteString -> ByteString -> IO () copyFile' inputFileP outputFileP = - withPwd' inputFileP outputFileP copyFile + withTmpDir' inputFileP outputFileP copyFile copyFileOverwrite' :: ByteString -> ByteString -> IO () copyFileOverwrite' inputFileP outputFileP = - withPwd' inputFileP outputFileP copyFileOverwrite + withTmpDir' inputFileP outputFileP copyFileOverwrite copyDirRecursive' :: ByteString -> ByteString -> IO () copyDirRecursive' inputDirP outputDirP = - withPwd' inputDirP outputDirP copyDirRecursive + withTmpDir' inputDirP outputDirP copyDirRecursive copyDirRecursiveOverwrite' :: ByteString -> ByteString -> IO () copyDirRecursiveOverwrite' inputDirP outputDirP = - withPwd' inputDirP outputDirP copyDirRecursiveOverwrite + withTmpDir' inputDirP outputDirP copyDirRecursiveOverwrite createDir' :: ByteString -> IO () -createDir' dest = withPwd dest createDir +createDir' dest = withTmpDir dest createDir createRegularFile' :: ByteString -> IO () -createRegularFile' dest = withPwd dest createRegularFile +createRegularFile' dest = withTmpDir dest createRegularFile + + +createSymlink' :: ByteString -> ByteString -> IO () +createSymlink' dest sympoint = withTmpDir dest + (\x -> createSymlink x sympoint) renameFile' :: ByteString -> ByteString -> IO () renameFile' inputFileP outputFileP = - withPwd' inputFileP outputFileP $ \i o -> do + withTmpDir' inputFileP outputFileP $ \i o -> do renameFile i o renameFile o i moveFile' :: ByteString -> ByteString -> IO () moveFile' inputFileP outputFileP = - withPwd' inputFileP outputFileP $ \i o -> do + withTmpDir' inputFileP outputFileP $ \i o -> do moveFile i o moveFile o i moveFileOverwrite' :: ByteString -> ByteString -> IO () moveFileOverwrite' inputFileP outputFileP = - withPwd' inputFileP outputFileP $ \i o -> do + withTmpDir' inputFileP outputFileP $ \i o -> do moveFileOverwrite i o moveFile o i recreateSymlink' :: ByteString -> ByteString -> IO () recreateSymlink' inputFileP outputFileP = - withPwd' inputFileP outputFileP recreateSymlink + withTmpDir' inputFileP outputFileP recreateSymlink noWritableDirPerms :: ByteString -> IO () -noWritableDirPerms path = withPwd path $ \p -> +noWritableDirPerms path = withTmpDir path $ \p -> setFileMode (P.fromAbs p) perms where perms = ownerReadMode @@ -138,34 +180,42 @@ noWritableDirPerms path = withPwd path $ \p -> noPerms :: ByteString -> IO () -noPerms path = withPwd path $ \p -> setFileMode (P.fromAbs p) nullFileMode +noPerms path = withTmpDir path $ \p -> setFileMode (P.fromAbs p) nullFileMode normalDirPerms :: ByteString -> IO () normalDirPerms path = - withPwd path $ \p -> setFileMode (P.fromAbs p) newDirPerms + withTmpDir path $ \p -> setFileMode (P.fromAbs p) newDirPerms getFileType' :: ByteString -> IO FileType -getFileType' path = withPwd path getFileType +getFileType' path = withTmpDir path getFileType getDirsFiles' :: ByteString -> IO [P.Path P.Abs] -getDirsFiles' path = withPwd path getDirsFiles +getDirsFiles' path = withTmpDir path getDirsFiles deleteFile' :: ByteString -> IO () -deleteFile' p = withPwd p deleteFile +deleteFile' p = withTmpDir p deleteFile deleteDir' :: ByteString -> IO () -deleteDir' p = withPwd p deleteDir +deleteDir' p = withTmpDir p deleteDir deleteDirRecursive' :: ByteString -> IO () -deleteDirRecursive' p = withPwd p deleteDirRecursive +deleteDirRecursive' p = withTmpDir p deleteDirRecursive canonicalizePath' :: ByteString -> IO (P.Path P.Abs) -canonicalizePath' p = withPwd p canonicalizePath +canonicalizePath' p = withTmpDir p canonicalizePath + +writeFile' :: ByteString -> ByteString -> IO () +writeFile' ip bs = + withTmpDir ip $ \p -> do + fd <- SPI.openFd (P.fromAbs p) SPI.WriteOnly Nothing + SPI.defaultFileFlags + SPB.fdWrite fd bs + SPI.closeFd fd