diff --git a/Test.hs b/Test.hs index f3969418b9..374f496e32 100644 --- a/Test.hs +++ b/Test.hs @@ -41,6 +41,7 @@ import qualified Logs.Presence import qualified Remote import qualified Types.Key import qualified Types.Messages +import qualified Config import qualified Config.Cost import qualified Crypto import qualified Utility.Path @@ -865,7 +866,12 @@ cleanup dir = do checklink :: FilePath -> Assertion checklink f = do s <- getSymbolicLinkStatus f - isSymbolicLink s @? f ++ " is not a symlink" + ifM (annexeval Config.isDirect) + -- in direct mode, it may be a symlink, or not, depending + -- on whether the content is present. + ( return () + , isSymbolicLink s @? f ++ " is not a symlink" + ) checkregularfile :: FilePath -> Assertion checkregularfile f = do @@ -879,15 +885,18 @@ checkcontent f = do assertEqual ("checkcontent " ++ f) c (content f) checkunwritable :: FilePath -> Assertion -checkunwritable f = do - -- Look at permissions bits rather than trying to write or using - -- fileAccess because if run as root, any file can be modified - -- despite permissions. - s <- getFileStatus f - let mode = fileMode s - if (mode == mode `unionFileModes` ownerWriteMode) - then assertFailure $ "able to modify annexed file's " ++ f ++ " content" - else return () +checkunwritable f = ifM (annexeval Config.isDirect) + ( return () + , do + -- Look at permissions bits rather than trying to write or + -- using fileAccess because if run as root, any file can be + -- modified despite permissions. + s <- getFileStatus f + let mode = fileMode s + if (mode == mode `unionFileModes` ownerWriteMode) + then assertFailure $ "able to modify annexed file's " ++ f ++ " content" + else return () + ) checkwritable :: FilePath -> Assertion checkwritable f = do