summaryrefslogtreecommitdiff
path: root/Logs/Transfer.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-12-19 16:15:39 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-12-19 16:15:39 -0400
commit271bec8c70920322fee13a052df4a9279255e698 (patch)
tree0cd67d713c46945687a9995034d0aa9d3c262e27 /Logs/Transfer.hs
parent40fcead8d1378f5d821bdd08e99c3103e5a4b316 (diff)
quickcheck test for transfer info read/write code
Fixed a bug the quickcheck turned up.
Diffstat (limited to 'Logs/Transfer.hs')
-rw-r--r--Logs/Transfer.hs14
1 files changed, 13 insertions, 1 deletions
diff --git a/Logs/Transfer.hs b/Logs/Transfer.hs
index 76412cf39..fa85846bb 100644
--- a/Logs/Transfer.hs
+++ b/Logs/Transfer.hs
@@ -294,7 +294,9 @@ readTransferInfo mpid s = TransferInfo
<*> pure False
where
(firstline, rest) = separate (== '\n') s
- (filename, _) = separate (== '\n') rest
+ filename
+ | end rest == "\n" = beginning rest
+ | otherwise = rest
bits = split " " firstline
numbits = length bits
time = if numbits > 0
@@ -304,6 +306,16 @@ readTransferInfo mpid s = TransferInfo
then Just <$> readish =<< headMaybe (drop 1 bits)
else pure Nothing -- not failure
+{- for quickcheck -}
+prop_read_write_transferinfo :: TransferInfo -> Bool
+prop_read_write_transferinfo info
+ | associatedFile info == Just "" = True -- file cannot be empty
+ | transferRemote info /= Nothing = True -- remote not stored
+ | transferTid info /= Nothing = True -- tid not stored
+ | otherwise = Just (info { transferPaused = False }) == info'
+ where
+ info' = readTransferInfo (transferPid info) (writeTransferInfo info)
+
parsePOSIXTime :: String -> Maybe POSIXTime
parsePOSIXTime s = utcTimeToPOSIXSeconds
<$> parseTime defaultTimeLocale "%s%Qs" s