Clarify what limitations the RelX parsers have.

Signed-off-by: Magnus Therning <magnus@therning.org>
This commit is contained in:
Magnus Therning 2016-01-07 16:15:06 +01:00
parent 28c4f7fe21
commit b5cff315a1
2 changed files with 9 additions and 0 deletions

View File

@ -93,6 +93,8 @@ parseAbsDir filepath =
-- | Get a location for a relative directory. Produces a normalized -- | Get a location for a relative directory. Produces a normalized
-- path which always ends in a path separator. -- path which always ends in a path separator.
-- --
-- Note that @filepath@ may contain any number of @./@ but may not consist solely of @./@. It also may not contain a single @..@ anywhere.
--
-- Throws: 'PathParseException' -- Throws: 'PathParseException'
-- --
parseRelDir :: MonadThrow m parseRelDir :: MonadThrow m
@ -125,6 +127,8 @@ parseAbsFile filepath =
-- | Get a location for a relative file. -- | Get a location for a relative file.
-- --
-- Note that @filepath@ may contain any number of @./@ but may not contain a single @..@ anywhere.
--
-- Throws: 'PathParseException' -- Throws: 'PathParseException'
-- --
parseRelFile :: MonadThrow m parseRelFile :: MonadThrow m

View File

@ -150,12 +150,15 @@ parseRelDirSpec =
failing "~/" failing "~/"
failing "/" failing "/"
failing "./" failing "./"
failing "././"
failing "//" failing "//"
failing "///foo//bar//mu/" failing "///foo//bar//mu/"
failing "///foo//bar////mu" failing "///foo//bar////mu"
failing "///foo//bar/.//mu" failing "///foo//bar/.//mu"
succeeding "foo.bak" (Path "foo.bak/") succeeding "foo.bak" (Path "foo.bak/")
succeeding "./foo" (Path "foo/") succeeding "./foo" (Path "foo/")
succeeding "././foo" (Path "foo/")
succeeding "./foo/./bar" (Path "foo/bar/")
succeeding "foo//bar//mu//" (Path "foo/bar/mu/") succeeding "foo//bar//mu//" (Path "foo/bar/mu/")
succeeding "foo//bar////mu" (Path "foo/bar/mu/") succeeding "foo//bar////mu" (Path "foo/bar/mu/")
succeeding "foo//bar/.//mu" (Path "foo/bar/mu/") succeeding "foo//bar/.//mu" (Path "foo/bar/mu/")
@ -193,6 +196,8 @@ parseRelFileSpec =
failing "///foo//bar/.//mu" failing "///foo//bar/.//mu"
succeeding "foo.txt" (Path "foo.txt") succeeding "foo.txt" (Path "foo.txt")
succeeding "./foo.txt" (Path "foo.txt") succeeding "./foo.txt" (Path "foo.txt")
succeeding "././foo.txt" (Path "foo.txt")
succeeding "./foo/./bar.txt" (Path "foo/bar.txt")
succeeding "foo//bar//mu.txt" (Path "foo/bar/mu.txt") succeeding "foo//bar//mu.txt" (Path "foo/bar/mu.txt")
succeeding "foo//bar////mu.txt" (Path "foo/bar/mu.txt") succeeding "foo//bar////mu.txt" (Path "foo/bar/mu.txt")
succeeding "foo//bar/.//mu.txt" (Path "foo/bar/mu.txt") succeeding "foo//bar/.//mu.txt" (Path "foo/bar/mu.txt")