From 8e958c3f4bf417d7d4b3e081a20216af1308c9ae Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 8 Jan 2016 16:14:39 -0400 Subject: [PATCH] defer deletion of test repos until end, fixes sqlite crash The crash turned out to be caused by the sqlite database being deleted out from under sqlite before it was done with it. Since multiple git_annex calls are done in the same process while running the test suite, the DbHandle could linger until GCed, and the test repo, and thus sqlite database be deleted before the workerThread was done. --- Test.hs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Test.hs b/Test.hs index f7f0203c7c..c8a0f4772d 100644 --- a/Test.hs +++ b/Test.hs @@ -1631,15 +1631,12 @@ withtmpclonerepo' cfg a = do clone <- clonerepo mainrepodir dir cfg r <- tryNonAsync (a clone) case r of - Right () -> cleanup clone + Right () -> return () Left e -> do - ifM (keepFailures <$> getTestMode) - ( putStrLn $ "** Preserving repo for failure analysis in " ++ clone - , cleanup clone - ) + whenM (keepFailures <$> getTestMode) $ + putStrLn $ "** Preserving repo for failure analysis in " ++ clone throwM e - disconnectOrigin :: Assertion disconnectOrigin = boolSystem "git" [Param "remote", Param "rm", Param "origin"] @? "remote rm"