packages feed

system-fileio 0.3.6 → 0.3.7

raw patch · 3 files changed

+24/−3 lines, 3 files

Files

lib/Filesystem.hs view
@@ -346,7 +346,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.3.6+version: 0.3.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.3/-  tag: system-fileio_0.3.6+  tag: system-fileio_0.3.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)