fix a case where fileProperty reported a change despite not making one

The problem occurred because two lists of lines of the file can be
different, while representing the same file content. For example:
["foo", "bar"]
["foo\nbar"]
This commit is contained in:
Joey Hess 2014-12-09 00:30:04 -04:00
parent 040a5fe3c7
commit f8943c2036
1 changed files with 4 additions and 4 deletions

View File

@ -62,11 +62,11 @@ fileProperty' :: (FilePath -> String -> IO ()) -> Desc -> ([Line] -> [Line]) ->
fileProperty' writer desc a f = property desc $ go =<< liftIO (doesFileExist f)
where
go True = do
ls <- liftIO $ lines <$> readFile f
let ls' = a ls
if ls' == ls
old <- liftIO $ readFile f
let new = unlines (a (lines old))
if old == new
then noChange
else makeChange $ viaTmp updatefile f (unlines ls')
else makeChange $ viaTmp updatefile f new
go False = makeChange $ writer f (unlines $ a [])
-- viaTmp makes the temp file mode 600.