more detailed tests

This commit is contained in:
Gregor Kleen 2017-10-05 20:17:37 +02:00
parent 15bd70f10a
commit 6c1afb6919
2 changed files with 7 additions and 4 deletions

View File

@ -65,7 +65,7 @@ consumeZip handleEntry = Zip.unZipStream `fuseBoth` consumeZip'
zipEntryName' <- fmap Text.unpack . either throw return . Text.decodeUtf8' $ Zip.zipEntryName e
contentChunks <- accContents
let
zipEntryName = normalise $ dropTrailingPathSeparator zipEntryName'
zipEntryName = normalise . makeValid $ dropTrailingPathSeparator zipEntryName'
zipEntryTime = localTimeToUTC utc $ Zip.zipEntryTime e
zipEntryContents
| hasTrailingPathSeparator zipEntryName' = Nothing
@ -101,6 +101,6 @@ produceZip info = Conduit.map toZipData =$= void (Zip.zipStream zipOptions)
toZipEntry :: Bool -- ^ Is directory?
-> ZipEntry -> Zip.ZipEntry
toZipEntry isDir ZipEntry{..} = Zip.ZipEntry
{ zipEntryName = Text.encodeUtf8 . Text.pack . bool dropTrailingPathSeparator addTrailingPathSeparator isDir . normalise $ zipEntryName
{ zipEntryName = Text.encodeUtf8 . Text.pack . normalise . makeValid . bool dropTrailingPathSeparator addTrailingPathSeparator isDir $ zipEntryName
, zipEntryTime = utcToLocalTime utc zipEntryTime
}

View File

@ -16,7 +16,7 @@ import Data.Conduit.Binary (sourceLbs, sinkLbs)
instance Arbitrary ZipEntry where
arbitrary = do
zipEntryName <- normalise . dropTrailingPathSeparator . joinPath <$> arbitrary
zipEntryName <- joinPath <$> arbitrary
zipEntryTime <- arbitrary
zipEntryContents <- arbitrary
return ZipEntry{..}
@ -27,4 +27,7 @@ spec = describe "Zip file handling" $ do
\zipFiles -> do
bs <- runConduit $ Conduit.sourceList zipFiles =$= produceZip def =$= sinkLbs
(_, zipFiles') <- runConduit $ sourceLbs bs =$= consumeZip return
zipFiles' `shouldBe` zipFiles
forM_ (zip zipFiles zipFiles') $ \(file, file') -> do
(shouldBe `on` normalise . makeValid . dropTrailingPathSeparator) (zipEntryName file') (zipEntryName file)
-- (zipEntryTime file') `shouldBe` (zipEntryTime file)
(zipEntryContents file') `shouldBe` (zipEntryContents file)