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.
This commit is contained in:
Joey Hess 2016-01-08 16:14:39 -04:00
parent bafcbe95c3
commit 8e958c3f4b
Failed to extract signature

View file

@ -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"