streamly-0.8.2: test/Streamly/Test/FileSystem/Event/Darwin.hs
-- |
-- Module : Streamly.Test.FileSystem.Event.Darwin
-- Copyright : (c) 2020 Composewell Technologies
-- License : BSD-3-Clause
-- Maintainer : streamly@composewell.com
-- Stability : experimental
-- Portability : GHC
--
module Streamly.Test.FileSystem.Event.Darwin (main) where
import qualified Streamly.Internal.FileSystem.Event.Darwin as Event
import Streamly.Test.FileSystem.Event.Common
moduleName :: String
moduleName = "FileSystem.Event.Darwin"
-- TODO:
-- Creation/deletion/move of hard links
-- Deletion of last hard link
-- If a directory is a symlink is it followed in recursive mode?
main :: IO ()
main = do
let symLinkRootTests =
dirCreateWithParent "subdir/dir"
(\dir -> [(dir, dirEvent Event.isCreated)])
: fileCreateWithParent "subdir/file"
(\file ->
[ (file, fileEvent Event.isCreated)
, (file, fileEvent Event.isAttrsModified)
]
)
: fileCreate "file-create-attrs"
(\file ->
[ (file, fileEvent Event.isCreated)
, (file, fileEvent Event.isAttrsModified)
]
)
: fileModify
"file-mod-attrs"
(\file -> [(file, fileEvent Event.isAttrsModified)])
: dirDelete "dir-sec" (\dir ->
[ (dir, dirEvent Event.isDeleted)
, (dir, dirEvent Event.isSecurityModified)
]
)
: commonTests
++ commonRecTests
let regularRootTests =
dirDelete "" (\dir ->
[ (dir, dirEvent Event.isDeleted)
, (dir, dirEvent Event.isSecurityModified)
, (dir, Event.isRootPathEvent)
]
)
-- The watch root create event always seems to come even though the
-- root is created before the watch is started. That may be because
-- of batching?
-- XXX Need to create watch root after adding the watch, otherwise
-- it fails intermittently.
-- : dirCreate "" (\dir -> [(dir, dirEvent Event.isCreated)])
: rootDirMove "moved" (\src ->
[ (src, Event.isRootPathEvent)
, (src, Event.isMoved)
])
: symLinkRootTests
let fileRootTests =
[ fileDelete "" (\path ->
[ (path, Event.isRootPathEvent)
, (path, Event.isDeleted)
])
, rootFileMove "moved" (\path ->
[(path, Event.isRootPathEvent)
, (path, Event.isMoved)
])
, fileModify "" (const [])
]
let w = Event.watchWith (Event.setAllEvents Event.On)
run = runTests moduleName "recursive" w
run DirType regularRootTests
run SymLinkResolvedPath symLinkRootTests
run FileType fileRootTests