summaryrefslogtreecommitdiff
path: root/test-runner.hs
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2013-11-19 16:31:40 -0400
committerJoey Hess <joey@kitenet.net>2013-11-19 16:31:40 -0400
commit46e0d4b8985dfd8dc69d684d86d8ab2b1ac44e82 (patch)
tree8010586e6e971e23195fe3200d42be8dbd0e3aee /test-runner.hs
parent5257991a8533b45566428ee2679f57a8f75dc065 (diff)
downloadgit-repair-46e0d4b8985dfd8dc69d684d86d8ab2b1ac44e82.tar.gz
run a fsck at end to double-check
Diffstat (limited to 'test-runner.hs')
-rw-r--r--test-runner.hs32
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"