70 lines
2.6 KiB
Haskell
Raw Normal View History

2005-04-24 08:51:33 +00:00
import Plugins.MkTemp
import Data.Maybe
import System.IO
import System.Directory
main = do
createDirectory "t"
------------------------------------------------------------------------
-- Try mkstemp with simple template
--
ts <- mapM (\_ -> mkstemp "t/t.X" ) [0..(26+26)] -- 1+26+26 files
() <- if (not $ all isJust ts)
then putStrLn $ "mkstemp couldn't create all expected files"
else putStrLn $ "created "++(show $ length $ catMaybes ts)++" files"
closeAll ts
-- next one shouldn't be possible
t <- mkstemp "t/t.X"
() <- if (not $ isNothing t)
then putStrLn $ "shouldn't have been able to create this file"
else putStrLn $ "correctly ran out of permutations"
closeAll [t]
rmAll (t:ts)
------------------------------------------------------------------------
-- Try again with large tmp
--
ts <- mapM (\_->do v <- mkstemp "t/t.XXXXXXXXXX"
case v of Just (t,h) -> hClose h >> return v
_ -> return v ) [1..10000]
() <- if (not $ all isJust ts)
then putStrLn $ "mkstemp couldn't create all expected files"
else putStrLn $ "mkstemp: created "++(show $ length $ catMaybes ts)++" files"
rmAll ts
------------------------------------------------------------------------
-- test mkstemps
--
ts <- mapM (\_->do v <- mkstemps "t/t.XXXXXXXXXX.hs" 3
case v of Just (t,h) -> hClose h >> return v
_ -> return v ) [1..2000]
() <- if (not $ all isJust ts)
then putStrLn $ "mkstemps couldn't create all expected files"
else putStrLn $ "mkstemps: created "++(show $ length $ catMaybes ts)++" files"
rmAll ts
------------------------------------------------------------------------
-- mkdtemp
--
ts <- mapM (\_ -> mkdtemp "t/XXXXXXXXXX") [1..2000]
() <- if (not $ all isJust ts)
then putStrLn $ "mkdtemp: couldn't create all expected directories"
else putStrLn $ "mkdtemp: created "++(show $ length $ catMaybes ts)++" directories"
rmAllDirs ts
------------------------------------------------------------------------
removeDirectory "t"
where
closeAll ts = mapM_ hClose $ map snd $ catMaybes ts
rmAll ts = mapM_ removeFile $ map fst $ catMaybes ts
rmAllDirs ts = mapM_ removeDirectory $ catMaybes ts