import qualified Data.ByteString as B
import qualified Data.Set as S
import qualified Data.Map as M
+import qualified System.FilePath.ByteString as P
import "mtl" Control.Monad.Writer
{- Each visible ViewFilter in a view results in another level of
- it to a file yields a set of ViewedFile which all contain the same
- MetaFields that were present in the input metadata
- (excluding fields that are not visible). -}
-prop_view_roundtrips :: FilePath -> MetaData -> Bool -> Bool
-prop_view_roundtrips f metadata visible = or
- [ null f
- , null (takeFileName f) && null (takeDirectory f)
+prop_view_roundtrips :: AssociatedFile -> MetaData -> Bool -> Bool
+prop_view_roundtrips (AssociatedFile Nothing) _ _ = True
+prop_view_roundtrips (AssociatedFile (Just f)) metadata visible = or
+ [ B.null (P.takeFileName f) && B.null (P.takeDirectory f)
, viewTooLarge view
- , all hasfields (viewedFiles view viewedFileFromReference f metadata)
+ , all hasfields (viewedFiles view viewedFileFromReference (fromRawFilePath f) metadata)
]
where
view = View (Git.Ref "foo") $
prop_upFrom_basics :: FilePath -> Bool
prop_upFrom_basics dir
| null dir = True
+ | '\NUL' `elem` dir = True -- not a legal filename
| dir == "/" = p == Nothing
| otherwise = p /= Just dir
where
prop_relPathDirToFileAbs_basics :: FilePath -> FilePath -> Bool
prop_relPathDirToFileAbs_basics from to
| null from || null to = True
+ | '\NUL' `elem` from || '\NUL' `elem` to = True -- not a legal filename
| from == to = null r
| otherwise = not (null r)
where