@@ -165,7 +165,8 @@ renameFileNestedDirEvents =
166-- | Convert an 'Event' record to a short representation for unit test.
166-- | Convert an 'Event' record to a short representation for unit test.
167showEventShort :: Event.Event -> String
167showEventShort :: Event.Event -> String
168+showEventShort ev@Event.Event{..} =
168−showEventShort ev@Event.Event{..} = Event.getRelPath ev ++ "_" ++ show eventFlags
169+ Event.getRelPath ev ++ "_" ++ show eventFlags
@@ -297,127 +298,99 @@ checkEvents rootPath m matchList = do
297-------------------------------------------------------------------------------
298-------------------------------------------------------------------------------
298-- FS Event Generators
299-- FS Event Generators
299-------------------------------------------------------------------------------
300-------------------------------------------------------------------------------
301+fsOpsPreTask :: FilePath -> MVar () -> String -> IO ()
302+fsOpsPreTask fp m msg = do
304+ putStrLn (msg ++ fp)
307+fsOpsPostTask :: FilePath -> IO ()
309+ threadDelay 200000 >> createDirectoryIfMissing True (fp </> "EOTask")
301-- XXX Factor out common code from all these functions. The specific operation
311-- XXX Factor out common code from all these functions. The specific operation
302-- can be passed to a common function.
312-- can be passed to a common function.
304fsOpsCreateSingleDir :: FilePath -> MVar () -> IO ()
314fsOpsCreateSingleDir :: FilePath -> MVar () -> IO ()
305fsOpsCreateSingleDir fp m = do
315fsOpsCreateSingleDir fp m = do
307− putStrLn ("Create Single Directory !!!!!!! on " ++ fp)
316+ fsOpsPreTask fp m "Create a Single Dir on : "
309 >> createDirectoryIfMissing True (fp </> "dir1Single")
317 >> createDirectoryIfMissing True (fp </> "dir1Single")
310− >> threadDelay 200000
318+ >> fsOpsPostTask fp
311− >> createDirectoryIfMissing True (fp </> "EOTask")
313fsOpsRemoveSingleDir :: FilePath -> MVar () -> IO ()
320fsOpsRemoveSingleDir :: FilePath -> MVar () -> IO ()
314fsOpsRemoveSingleDir fp m = do
321fsOpsRemoveSingleDir fp m = do
316− putStrLn ("Remove Single Directory !!!!!!! on " ++ fp)
322+ fsOpsPreTask fp m "Remove Single Directory on : "
318 >> removeDirectory (fp </> "dir1Single")
323 >> removeDirectory (fp </> "dir1Single")
319− >> threadDelay 200000
324+ >> fsOpsPostTask fp
320− >> createDirectoryIfMissing True (fp </> "EOTask")
322fsOpsRenameSingleDir :: FilePath -> MVar () -> IO ()
326fsOpsRenameSingleDir :: FilePath -> MVar () -> IO ()
323fsOpsRenameSingleDir fp m = do
327fsOpsRenameSingleDir fp m = do
325− putStrLn ("Rename a Single Directory !!!!!!! on " ++ fp)
328+ fsOpsPreTask fp m "Rename a Single Directory on : "
327 >> renameDirectory (fp </> "dir1Single") (fp </> "dir1SingleRenamed")
329 >> renameDirectory (fp </> "dir1Single") (fp </> "dir1SingleRenamed")
328− >> threadDelay 200000
330+ >> fsOpsPostTask fp
329− >> createDirectoryIfMissing True (fp </> "EOTask")
331fsOpsCreateNestedDir :: FilePath -> MVar () -> IO ()
332fsOpsCreateNestedDir :: FilePath -> MVar () -> IO ()
332fsOpsCreateNestedDir fp m = do
333fsOpsCreateNestedDir fp m = do
334− putStrLn ("Create Nested Directory !!!!!!!!!!!!! on " ++ fp)
334+ fsOpsPreTask fp m "Create Nested Directory on : "
336 >> createDirectoryIfMissing True (fp </> "dir1" </> "dir2" </> "dir3")
335 >> createDirectoryIfMissing True (fp </> "dir1" </> "dir2" </> "dir3")
337− >> threadDelay 200000
336+ >> fsOpsPostTask fp
338− >> createDirectoryIfMissing True (fp </> "EOTask")
340fsOpsRemoveNestedDir :: FilePath -> MVar () -> IO ()
338fsOpsRemoveNestedDir :: FilePath -> MVar () -> IO ()
341fsOpsRemoveNestedDir fp m = do
339fsOpsRemoveNestedDir fp m = do
343− putStrLn ("Remove Nested Directory !!!!!!!!!!!!! on " ++ fp)
340+ fsOpsPreTask fp m "Remove Nested Directory on : "
345 >> removePathForcibly (fp </> "dir1")
341 >> removePathForcibly (fp </> "dir1")
346− >> threadDelay 200000
342+ >> fsOpsPostTask fp
347− >> createDirectoryIfMissing True (fp </> "EOTask")
349fsOpsRenameNestedDir :: FilePath -> MVar () -> IO ()
344fsOpsRenameNestedDir :: FilePath -> MVar () -> IO ()
350fsOpsRenameNestedDir fp m = do
345fsOpsRenameNestedDir fp m = do
352− putStrLn ("Rename Nested Directory !!!!!!!!!!!!! on " ++ fp)
346+ fsOpsPreTask fp m "Rename Nested Directory on : "
354 >> renameDirectory
347 >> renameDirectory
355 (fp </> "dir1" </> "dir2" </> "dir3")
348 (fp </> "dir1" </> "dir2" </> "dir3")
356 (fp </> "dir1" </> "dir2" </> "dir3Renamed")
349 (fp </> "dir1" </> "dir2" </> "dir3Renamed")
357− >> threadDelay 200000
350+ >> fsOpsPostTask fp
358− >> createDirectoryIfMissing True (fp </> "EOTask")
360fsOpsCreateFileInRootDir :: FilePath -> MVar () -> IO ()
352fsOpsCreateFileInRootDir :: FilePath -> MVar () -> IO ()
361fsOpsCreateFileInRootDir fp m = do
353fsOpsCreateFileInRootDir fp m = do
362− takeMVar m
354+ fsOpsPreTask fp m "Create a File on : "
363− let tpath = (fp </> "FileCreated.txt")
364− putStrLn ("create a File on " ++ fp)
366− >> writeFile tpath "Test Data"
355+ >> writeFile (fp </> "FileCreated.txt") "Test Data"
367− >> threadDelay 200000
356+ >> fsOpsPostTask fp
368− >> createDirectoryIfMissing True (fp </> "EOTask")
370fsOpsRemoveFileInRootDir :: FilePath -> MVar () -> IO ()
358fsOpsRemoveFileInRootDir :: FilePath -> MVar () -> IO ()
371fsOpsRemoveFileInRootDir fp m = do
359fsOpsRemoveFileInRootDir fp m = do
373 let tpath = (fp </> "FileCreated.txt")
360 let tpath = (fp </> "FileCreated.txt")
374− putStrLn ("Remove a File on " ++ fp)
361+ fsOpsPreTask fp m "Remove a File on : "
376 >> removeFile tpath
362 >> removeFile tpath
377− >> threadDelay 200000
363+ >> fsOpsPostTask fp
378− >> createDirectoryIfMissing True (fp </> "EOTask")
380fsOpsRenameFileInRootDir :: FilePath -> MVar () -> IO ()
365fsOpsRenameFileInRootDir :: FilePath -> MVar () -> IO ()
381fsOpsRenameFileInRootDir fp m = do
366fsOpsRenameFileInRootDir fp m = do
383 let spath = (fp </> "FileCreated.txt")
367 let spath = (fp </> "FileCreated.txt")
384 tpath = (fp </> "FileRenamed.txt")
368 tpath = (fp </> "FileRenamed.txt")
385− putStrLn ("Rename a File on " ++ fp)
369+ fsOpsPreTask fp m "Rename a File on : "
387 >> renamePath spath tpath
370 >> renamePath spath tpath
388− >> threadDelay 200000
371+ >> fsOpsPostTask fp
389− >> createDirectoryIfMissing True (fp </> "EOTask")
391fsOpsCreateFileInNestedDir :: FilePath -> MVar () -> IO ()
373fsOpsCreateFileInNestedDir :: FilePath -> MVar () -> IO ()
392fsOpsCreateFileInNestedDir fp m = do
374fsOpsCreateFileInNestedDir fp m = do
394 let tpath = (fp </> "dir1" </> "dir2" </> "dir3" </> "FileCreated.txt")
375 let tpath = (fp </> "dir1" </> "dir2" </> "dir3" </> "FileCreated.txt")
395− putStrLn ("create a File on nested dir " ++ fp)
376+ fsOpsPreTask fp m "create a File in nested dir on : "
397 >> writeFile tpath "Test Data"
377 >> writeFile tpath "Test Data"
398− >> threadDelay 200000
378+ >> fsOpsPostTask fp
399− >> createDirectoryIfMissing True (fp </> "EOTask")
401fsOpsRemoveFileInNestedDir :: FilePath -> MVar () -> IO ()
380fsOpsRemoveFileInNestedDir :: FilePath -> MVar () -> IO ()
402fsOpsRemoveFileInNestedDir fp m = do
381fsOpsRemoveFileInNestedDir fp m = do
404 let tpath = (fp </> "dir1" </> "dir2" </> "dir3" </> "FileCreated.txt")
382 let tpath = (fp </> "dir1" </> "dir2" </> "dir3" </> "FileCreated.txt")
405− putStrLn ("Remove a File on nested dir " ++ fp)
383+ fsOpsPreTask fp m "Remove a File in nested dir on : "
407− >> threadDelay 200000 >> removeFile tpath
384+ >> removeFile tpath
408− >> threadDelay 200000
385+ >> fsOpsPostTask fp
409− >> createDirectoryIfMissing True (fp </> "EOTask")
411fsOpsRenameFileInNestedDir :: FilePath -> MVar () -> IO ()
387fsOpsRenameFileInNestedDir :: FilePath -> MVar () -> IO ()
412fsOpsRenameFileInNestedDir fp m = do
388fsOpsRenameFileInNestedDir fp m = do
414 let spath = (fp </> "dir1" </> "dir2" </> "dir3" </> "FileCreated.txt")
389 let spath = (fp </> "dir1" </> "dir2" </> "dir3" </> "FileCreated.txt")
415 tpath = (fp </> "dir1" </> "dir2" </> "dir3" </> "FileRenamed.txt")
390 tpath = (fp </> "dir1" </> "dir2" </> "dir3" </> "FileRenamed.txt")
416− putStrLn ("Rename a File on nested dir " ++ fp)
391+ fsOpsPreTask fp m "Rename a File in nested on : "
418 >> renamePath spath tpath
392 >> renamePath spath tpath
419− >> threadDelay 200000
393+ >> fsOpsPostTask fp
420− >> createDirectoryIfMissing True (fp </> "EOTask")
422checker :: S.IsStream t =>
395checker :: S.IsStream t =>
423 FilePath -> MVar () -> [String] -> t IO String
396 FilePath -> MVar () -> [String] -> t IO String
@@ -439,215 +412,118 @@ driverInit = do
439-- XXX Factor out common code from all these. Pass a specific fsops function to
412-- XXX Factor out common code from all these. Pass a specific fsops function to
440-- a common functions.
413-- a common functions.
419+ -> (FilePath -> MVar () -> IO ())
421+eventProcessor fp sync evts func = do
423+ $ (checker fp sync evts)
425+ S.yieldM -- ^ this message should follow checker
427+ >> threadDelay 10000000
428+ >> return "fOps Done")
429+ return $ fromJust res
442driverCreateSingleDir :: IO String
431driverCreateSingleDir :: IO String
443driverCreateSingleDir = do
432driverCreateSingleDir = do
444 sync <- driverInit
433 sync <- driverInit
445− withSystemTempDirectory fseventDir $ \fp -> do
434+ withSystemTempDirectory fseventDir $ \fp ->
446− res <- S.head
435+ eventProcessor
447− $ (checker fp sync singleDirCreateEvents)
436+ fp sync singleDirCreateEvents fsOpsCreateSingleDir
449− S.yieldM -- ^ this message should follow checker
450− (fsOpsCreateSingleDir fp sync
451− >> threadDelay 10000000
452− >> return "fOps Done")
453− return $ fromJust res
455driverRemoveSingleDir :: IO String
438driverRemoveSingleDir :: IO String
456driverRemoveSingleDir = do
439driverRemoveSingleDir = do
457 sync <- driverInit
440 sync <- driverInit
458 withSystemTempDirectory fseventDir $ \fp -> do
441 withSystemTempDirectory fseventDir $ \fp -> do
459 createDirectoryIfMissing True (fp </> "dir1Single")
442 createDirectoryIfMissing True (fp </> "dir1Single")
460− res <- S.head
443+ eventProcessor
461− $ (checker fp sync singleDirRemoveEvents)
444+ fp sync singleDirRemoveEvents fsOpsRemoveSingleDir
463− S.yieldM -- ^ this message should follow checker
464− (fsOpsRemoveSingleDir fp sync
465− >> threadDelay 10000000
466− >> return "fOps Done")
467− return $ fromJust res
469driverRenameSingleDir :: IO String
446driverRenameSingleDir :: IO String
470driverRenameSingleDir = do
447driverRenameSingleDir = do
471 sync <- driverInit
448 sync <- driverInit
472 withSystemTempDirectory fseventDir $ \fp -> do
449 withSystemTempDirectory fseventDir $ \fp -> do
473 createDirectoryIfMissing True (fp </> "dir1Single")
450 createDirectoryIfMissing True (fp </> "dir1Single")
474− res <- S.head
451+ eventProcessor
475− $ (checker fp sync singleDirRenameEvents)
452+ fp sync singleDirRenameEvents fsOpsRenameSingleDir
477− S.yieldM -- ^ this message should follow checker
478− (fsOpsRenameSingleDir fp sync
479− >> threadDelay 10000000
480− >> return "fOps Done")
481− return $ fromJust res
483driverCreateNestedDir :: IO String
454driverCreateNestedDir :: IO String
484driverCreateNestedDir = do
455driverCreateNestedDir = do
485 sync <- driverInit
456 sync <- driverInit
486− withSystemTempDirectory fseventDir $ \fp -> do
457+ withSystemTempDirectory fseventDir $ \fp ->
487− res <- S.head
458+ eventProcessor
488− $ (checker fp sync nestedDirCreateEvents)
459+ fp sync nestedDirCreateEvents fsOpsCreateNestedDir
491− (fsOpsCreateNestedDir fp sync
492− >> threadDelay 10000000
493− >> return "fOps Done")
494− return $ fromJust res
496driverRemoveNestedDir :: IO String
461driverRemoveNestedDir :: IO String
497driverRemoveNestedDir = do
462driverRemoveNestedDir = do
498 sync <- driverInit
463 sync <- driverInit
499 withSystemTempDirectory fseventDir $ \fp -> do
464 withSystemTempDirectory fseventDir $ \fp -> do
500 createDirectoryIfMissing True (fp </> "dir1" </> "dir2" </> "dir3")
465 createDirectoryIfMissing True (fp </> "dir1" </> "dir2" </> "dir3")
501− res <- S.head
466+ eventProcessor
502− $ (checker fp sync nestedDirRemoveEvents)
467+ fp sync nestedDirRemoveEvents fsOpsRemoveNestedDir
505− (fsOpsRemoveNestedDir fp sync
506− >> threadDelay 10000000
507− >> return "fOps Done")
508− return $ fromJust res
510driverRenameNestedDir :: IO String
469driverRenameNestedDir :: IO String
511driverRenameNestedDir = do
470driverRenameNestedDir = do
512 sync <- driverInit
471 sync <- driverInit
513 withSystemTempDirectory fseventDir $ \fp -> do
472 withSystemTempDirectory fseventDir $ \fp -> do
514 createDirectoryIfMissing True (fp </> "dir1" </> "dir2" </> "dir3")
473 createDirectoryIfMissing True (fp </> "dir1" </> "dir2" </> "dir3")
515− res <- S.head
474+ eventProcessor
516− $ (checker fp sync nestedDirRenameEvents)
475+ fp sync nestedDirRenameEvents fsOpsRenameNestedDir
519− (fsOpsRenameNestedDir fp sync
520− >> threadDelay 10000000
521− >> return "fOps Done")
522− return $ fromJust res
524driverCreateFileInRootDir :: IO String
477driverCreateFileInRootDir :: IO String
525driverCreateFileInRootDir = do
478driverCreateFileInRootDir = do
526 sync <- driverInit
479 sync <- driverInit
527 withSystemTempDirectory fseventDir $ \fp -> do
480 withSystemTempDirectory fseventDir $ \fp -> do
528− res <- S.head
481+ eventProcessor
529− $ (checker fp sync createFileRootDirEvents)
482+ fp sync createFileRootDirEvents fsOpsCreateFileInRootDir
532− (fsOpsCreateFileInRootDir fp sync
533− >> threadDelay 10000000
534− >> return "fOps Done")
535− return $ fromJust res
537driverRemoveFileInRootDir :: IO String
484driverRemoveFileInRootDir :: IO String
538driverRemoveFileInRootDir = do
485driverRemoveFileInRootDir = do
539 sync <- driverInit
486 sync <- driverInit
540 withSystemTempDirectory fseventDir $ \fp -> do
487 withSystemTempDirectory fseventDir $ \fp -> do
541 writeFile (fp </> "FileCreated.txt") "Test Data"
488 writeFile (fp </> "FileCreated.txt") "Test Data"
542− res <- S.head
489+ eventProcessor
543− $ (checker fp sync removeFileRootDirEvents)
490+ fp sync removeFileRootDirEvents fsOpsRemoveFileInRootDir
546− (fsOpsRemoveFileInRootDir fp sync
547− >> threadDelay 10000000
548− >> return "fOps Done")
549− return $ fromJust res
551driverRenameFileInRootDir :: IO String
492driverRenameFileInRootDir :: IO String
552driverRenameFileInRootDir = do
493driverRenameFileInRootDir = do
553 sync <- driverInit
494 sync <- driverInit
554 withSystemTempDirectory fseventDir $ \fp -> do
495 withSystemTempDirectory fseventDir $ \fp -> do
555 writeFile (fp </> "FileCreated.txt") "Test Data"
496 writeFile (fp </> "FileCreated.txt") "Test Data"
556− res <- S.head
497+ eventProcessor
557− $ (checker fp sync renameFileRootDirEvents)
498+ fp sync renameFileRootDirEvents fsOpsRenameFileInRootDir
560− (fsOpsRenameFileInRootDir fp sync
561− >> threadDelay 10000000
562− >> return "fOps Done")
563− return $ fromJust res
565driverCreateFileInNestedDir :: IO String
500driverCreateFileInNestedDir :: IO String
566driverCreateFileInNestedDir = do
501driverCreateFileInNestedDir = do
567 sync <- driverInit
502 sync <- driverInit
568 withSystemTempDirectory fseventDir $ \fp -> do
503 withSystemTempDirectory fseventDir $ \fp -> do
569 createDirectoryIfMissing True (fp </> "dir1" </> "dir2" </> "dir3")
504 createDirectoryIfMissing True (fp </> "dir1" </> "dir2" </> "dir3")
570− res <- S.head
505+ eventProcessor
571− $ (checker fp sync createFileNestedDirEvents)
506+ fp sync createFileNestedDirEvents fsOpsCreateFileInNestedDir
574− (fsOpsCreateFileInNestedDir fp sync
575− >> threadDelay 10000000
576− >> return "fOps Done")
577− return $ fromJust res
579driverRemoveFileInNestedDir :: IO String
508driverRemoveFileInNestedDir :: IO String
580driverRemoveFileInNestedDir = do
509driverRemoveFileInNestedDir = do
581 sync <- driverInit
510 sync <- driverInit
582 withSystemTempDirectory fseventDir $ \fp -> do
511 withSystemTempDirectory fseventDir $ \fp -> do
512+ let nestedDir = fp </> "dir1" </> "dir2" </> "dir3"
513+ fpath = nestedDir </> "FileCreated.txt"
583− createDirectoryIfMissing True (fp </> "dir1" </> "dir2" </> "dir3")
514+ createDirectoryIfMissing True nestedDir >> writeFile fpath "Test Data"
584− >> writeFile (fp </> "dir1" </> "dir2" </> "dir3" </> "FileCreated.txt") "Test Data"
515+ eventProcessor
586− $ (checker fp sync removeFileNestedDirEvents)
516+ fp sync removeFileNestedDirEvents fsOpsRemoveFileInNestedDir
589− (fsOpsRemoveFileInNestedDir fp sync
590− >> threadDelay 10000000
591− >> return "fOps Done")
592− return $ fromJust res
594driverRenameFileInNestedDir :: IO String
518driverRenameFileInNestedDir :: IO String
595driverRenameFileInNestedDir = do
519driverRenameFileInNestedDir = do
596 sync <- driverInit
520 sync <- driverInit
597 withSystemTempDirectory fseventDir $ \fp -> do
521 withSystemTempDirectory fseventDir $ \fp -> do
522+ let nestedDir = fp </> "dir1" </> "dir2" </> "dir3"
523+ fpath = nestedDir </> "FileCreated.txt"
598− createDirectoryIfMissing True (fp </> "dir1" </> "dir2" </> "dir3")
524+ createDirectoryIfMissing True nestedDir >> writeFile fpath "Test Data"
599− >> writeFile (fp </> "dir1" </> "dir2" </> "dir3" </> "FileCreated.txt") "Test Data"
525+ eventProcessor
601− $ (checker fp sync renameFileNestedDirEvents)
526+ fp sync renameFileNestedDirEvents fsOpsRenameFileInNestedDir
604− (fsOpsRenameFileInNestedDir fp sync
605− >> threadDelay 10000000
606− >> return "fOps Done")
607− return $ fromJust res
609−-------------------------------------------------------------------------------
611−-------------------------------------------------------------------------------
613−-- XXX These can either be directly inlined instead of creating a wrapper
614−-- function or the wrapper could be common passing the function being checked.
616−testCreateSingleDir :: Expectation
617−testCreateSingleDir = driverCreateSingleDir `shouldReturn` "PASS"
619−testRemoveSingleDir :: Expectation
620−testRemoveSingleDir = driverRemoveSingleDir `shouldReturn` "PASS"
622−testRenameSingleDir :: Expectation
623−testRenameSingleDir = driverRenameSingleDir `shouldReturn` "PASS"
625−testCreateNestedDir :: Expectation
626−testCreateNestedDir = driverCreateNestedDir `shouldReturn` "PASS"
628−testRemoveNestedDir :: Expectation
629−testRemoveNestedDir = driverRemoveNestedDir `shouldReturn` "PASS"
631−testRenameNestedDir :: Expectation
632−testRenameNestedDir = driverRenameNestedDir `shouldReturn` "PASS"
634−testCreateFileInRootDir :: Expectation
635−testCreateFileInRootDir = driverCreateFileInRootDir `shouldReturn` "PASS"
637−testRemoveFileInRootDir :: Expectation
638−testRemoveFileInRootDir = driverRemoveFileInRootDir `shouldReturn` "PASS"
640−testRenameFileInRootDir :: Expectation
641−testRenameFileInRootDir = driverRenameFileInRootDir `shouldReturn` "PASS"
643−testCreateFileInNestedDir :: Expectation
644−testCreateFileInNestedDir = driverCreateFileInNestedDir `shouldReturn` "PASS"
646−testRemoveFileInNestedDir :: Expectation
647−testRemoveFileInNestedDir = driverRemoveFileInNestedDir `shouldReturn` "PASS"
649−testRenameFileInNestedDir :: Expectation
650−testRenameFileInNestedDir = driverRenameFileInNestedDir `shouldReturn` "PASS"
652-------------------------------------------------------------------------------
528-------------------------------------------------------------------------------
@@ -655,15 +531,27 @@ testRenameFileInNestedDir = driverRenameFileInNestedDir `shouldReturn` "PASS"
656main :: IO ()
532main :: IO ()
657main = hspec $ do
533main = hspec $ do
658− prop "Create a single directory" testCreateSingleDir
534+ prop "Create a single directory"
535+ $ driverCreateSingleDir `shouldReturn` "PASS"
659− prop "Remove a single directory" testRemoveSingleDir
536+ prop "Remove a single directory"
537+ $ driverRemoveSingleDir `shouldReturn` "PASS"
660− prop "Rename a single directory" testRenameSingleDir
538+ prop "Rename a single directory"
539+ $ driverRenameSingleDir `shouldReturn` "PASS"
661− prop "Create a nested directory" testCreateNestedDir
540+ prop "Create a nested directory"
541+ $ driverCreateNestedDir `shouldReturn` "PASS"
662− prop "Remove a nested directory" testRemoveNestedDir
542+ prop "Remove a nested directory"
543+ $ driverRemoveNestedDir `shouldReturn` "PASS"
663− prop "Rename a nested directory" testRenameNestedDir
544+ prop "Rename a nested directory"
545+ $ driverRenameNestedDir `shouldReturn` "PASS"
664− prop "Create a file in root Dir" testCreateFileInRootDir
546+ prop "Create a file in root Dir"
547+ $ driverCreateFileInRootDir `shouldReturn` "PASS"
665− prop "Remove a file in root Dir" testRemoveFileInRootDir
548+ prop "Remove a file in root Dir"
549+ $ driverRemoveFileInRootDir `shouldReturn` "PASS"
666− prop "Rename a file in root Dir" testRenameFileInRootDir
550+ prop "Rename a file in root Dir"
551+ $ driverRenameFileInRootDir `shouldReturn` "PASS"
667− prop "Create a file in a nested Dir" testCreateFileInNestedDir
552+ prop "Create a file in a nested Dir"
553+ $ driverCreateFileInNestedDir `shouldReturn` "PASS"
668− prop "Remove a file in a nested Dir" testRemoveFileInNestedDir
554+ prop "Remove a file in a nested Dir"
555+ $ driverRemoveFileInNestedDir `shouldReturn` "PASS"
669− prop "Rename a file in a nested Dir" testRenameFileInNestedDir
556+ prop "Rename a file in a nested Dir"
557+ $ driverRenameFileInNestedDir `shouldReturn` "PASS"