system-fileio 0.2.6 → 0.2.7
raw patch · 3 files changed
+24/−3 lines, 3 files
Files
- lib/Filesystem.hs +1/−1
- system-fileio.cabal +2/−2
- tests/FilesystemTests/Posix.hs +21/−0
lib/Filesystem.hs view
@@ -355,7 +355,7 @@ foreign import ccall unsafe "opendir" c_opendir :: CString -> IO (Ptr ()) -foreign import ccall unsafe "opendir"+foreign import ccall unsafe "closedir" c_closedir :: Ptr () -> IO CInt foreign import ccall unsafe "hssystemfileio_alloc_dirent"
system-fileio.cabal view
@@ -1,5 +1,5 @@ name: system-fileio-version: 0.2.6+version: 0.2.7 license: MIT license-file: license.txt author: John Millikin <jmillikin@gmail.com>@@ -42,7 +42,7 @@ source-repository this type: bazaar location: https://john-millikin.com/branches/system-fileio/0.2/- tag: system-fileio_0.2.6+ tag: system-fileio_0.2.7 library ghc-options: -Wall -O2
tests/FilesystemTests/Posix.hs view
@@ -31,6 +31,8 @@ import qualified GHC.IOBase as GHC #endif +import qualified System.Posix.IO as PosixIO+ import Filesystem import Filesystem.Path import qualified Filesystem.Path.Rules as Rules@@ -229,6 +231,9 @@ , todo "readTextFile" , todo "writeTextFile" , todo "appendTextFile"+ , suite "regression-tests"+ [ test_ListDirectoryLeaksFds+ ] ] test_IsFile :: Text -> FilePath -> Suite@@ -549,6 +554,22 @@ Filesystem.withTextFile file_path ReadMode $ Data.Text.IO.hGetContents $expect (equalLines (Data.Text.pack contents) read_contents)++test_ListDirectoryLeaksFds :: Suite+test_ListDirectoryLeaksFds = assertionsWithTemp "listDirectory-leaks-fds" $ \tmp -> do+ -- Test that listDirectory doesn't leak file descriptors.+ let dir_path = tmp </> "subdir"+ mkdir_ffi dir_path+ + nullfd1 <- liftIO $ PosixIO.openFd "/dev/null" PosixIO.ReadOnly Nothing PosixIO.defaultFileFlags+ liftIO $ PosixIO.closeFd nullfd1+ + subdirContents <- liftIO $ listDirectory dir_path+ + nullfd2 <- liftIO $ PosixIO.openFd "/dev/null" PosixIO.ReadOnly Nothing PosixIO.defaultFileFlags+ liftIO $ PosixIO.closeFd nullfd2+ + $assert (equal nullfd1 nullfd2) withPathCString :: FilePath -> (CString -> IO a) -> IO a withPathCString p = Data.ByteString.useAsCString (encode p)