diff options
author | Joey Hess <joey@kitenet.net> | 2013-11-19 16:31:40 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2013-11-19 16:31:40 -0400 |
commit | 46e0d4b8985dfd8dc69d684d86d8ab2b1ac44e82 (patch) | |
tree | 8010586e6e971e23195fe3200d42be8dbd0e3aee | |
parent | 5257991a8533b45566428ee2679f57a8f75dc065 (diff) | |
download | git-repair-46e0d4b8985dfd8dc69d684d86d8ab2b1ac44e82.tar.gz |
run a fsck at end to double-check
-rw-r--r-- | test-runner.hs | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/test-runner.hs b/test-runner.hs index 71e8d9a..58c80b8 100644 --- a/test-runner.hs +++ b/test-runner.hs @@ -13,6 +13,7 @@ import qualified Git.Construct import qualified Git.Config import qualified Git.Destroyer import qualified Git.Repair +import qualified Git.Fsck import Utility.Tmp data Settings = Settings @@ -54,14 +55,31 @@ runTest settings = withTmpDir "tmprepo" $ \tmpdir -> do Git.Destroyer.applyDamage damage g result <- catchMaybeIO $ Git.Repair.successfulRepair <$> Git.Repair.runRepair (forced settings) g - logTest damage result case result of - Just True -> exitSuccess - _ -> exitFailure + Just True -> do + fsckok <- not . Git.Fsck.foundBroken + <$> Git.Fsck.findBroken False g + logTest damage result (Just fsckok) + if fsckok + then do + putStrLn "** repair succeeded" + exitSuccess + else do + putStrLn "** repair succeeded, but final fsck failed" + exitFailure + _ -> do + logTest damage result Nothing + putStrLn "** repair failed" + exitFailure -data TestLog = TestLog [Git.Destroyer.Damage] (Maybe Bool) +data TestLog = TestLog + { damagelist :: [Git.Destroyer.Damage] + , resut :: Maybe Bool + , fsckresult :: Maybe Bool + } deriving (Read, Show) -logTest :: [Git.Destroyer.Damage] -> Maybe Bool -> IO () -logTest damage result = - appendFile "test-runner.log" $ show (TestLog damage result) ++ "\n" +logTest :: [Git.Destroyer.Damage] -> Maybe Bool -> Maybe Bool -> IO () +logTest damage result fsckok = + appendFile "test-runner.log" $ + show (TestLog damage result fsckok) ++ "\n" |