From fa88037c46b3d7094e854397b954b478cf246caa Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 8 Jan 2016 16:14:39 -0400 Subject: 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(-) (limited to 'Test.hs') diff --git a/Test.hs b/Test.hs index f7f0203c7..c8a0f4772 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" -- cgit v1.2.3