parent
7272179979
commit
a1b28e476a
1 changed files with 43 additions and 4 deletions
47
test.hs
47
test.hs
|
@ -149,6 +149,7 @@ blackbox = TestLabel "blackbox" $ TestList
|
||||||
, test_status
|
, test_status
|
||||||
, test_version
|
, test_version
|
||||||
, test_sync
|
, test_sync
|
||||||
|
, test_sync_regression
|
||||||
, test_map
|
, test_map
|
||||||
, test_uninit
|
, test_uninit
|
||||||
, test_upgrade
|
, test_upgrade
|
||||||
|
@ -578,6 +579,35 @@ test_sync :: Test
|
||||||
test_sync = "git-annex sync" ~: intmpclonerepo $ do
|
test_sync = "git-annex sync" ~: intmpclonerepo $ do
|
||||||
git_annex "sync" [] @? "sync failed"
|
git_annex "sync" [] @? "sync failed"
|
||||||
|
|
||||||
|
{- Regression test for sync merge bug fixed in
|
||||||
|
- 0214e0fb175a608a49b812d81b4632c081f63027 -}
|
||||||
|
test_sync_regression :: Test
|
||||||
|
test_sync_regression = "git-annex sync_regression" ~:
|
||||||
|
{- We need 3 repos to see this bug. -}
|
||||||
|
withtmpclonerepo False $ \r1 -> do
|
||||||
|
withtmpclonerepo False $ \r2 -> do
|
||||||
|
withtmpclonerepo False $ \r3 -> do
|
||||||
|
forM_ [r1, r2, r3] $ \r -> indir r $ do
|
||||||
|
when (r /= r1) $
|
||||||
|
boolSystem "git" [Params "remote add r1", File ("../../" ++ r1)] @? "remote add"
|
||||||
|
when (r /= r2) $
|
||||||
|
boolSystem "git" [Params "remote add r2", File ("../../" ++ r2)] @? "remote add"
|
||||||
|
when (r /= r3) $
|
||||||
|
boolSystem "git" [Params "remote add r3", File ("../../" ++ r3)] @? "remote add"
|
||||||
|
git_annex "get" [annexedfile] @? "get failed"
|
||||||
|
boolSystem "git" [Params "remote rm origin"] @? "remote rm"
|
||||||
|
forM_ [r3, r2, r1] $ \r -> indir r $
|
||||||
|
git_annex "sync" [] @? "sync failed"
|
||||||
|
forM_ [r3, r2] $ \r -> indir r $
|
||||||
|
git_annex "drop" ["--force", annexedfile] @? "drop failed"
|
||||||
|
indir r1 $ do
|
||||||
|
git_annex "sync" [] @? "sync failed in r1"
|
||||||
|
git_annex_expectoutput "find" ["--in", "r3"] []
|
||||||
|
{- This was the bug. The sync
|
||||||
|
- mangled location log data and it
|
||||||
|
- thought the file was still in r2 -}
|
||||||
|
git_annex_expectoutput "find" ["--in", "r2"] []
|
||||||
|
|
||||||
test_map :: Test
|
test_map :: Test
|
||||||
test_map = "git-annex map" ~: intmpclonerepo $ do
|
test_map = "git-annex map" ~: intmpclonerepo $ do
|
||||||
-- set descriptions, that will be looked for in the map
|
-- set descriptions, that will be looked for in the map
|
||||||
|
@ -762,7 +792,9 @@ intmpbareclonerepo :: Assertion -> Assertion
|
||||||
intmpbareclonerepo a = withtmpclonerepo True $ \r -> indir r a
|
intmpbareclonerepo a = withtmpclonerepo True $ \r -> indir r a
|
||||||
|
|
||||||
withtmpclonerepo :: Bool -> (FilePath -> Assertion) -> Assertion
|
withtmpclonerepo :: Bool -> (FilePath -> Assertion) -> Assertion
|
||||||
withtmpclonerepo bare = bracket (clonerepo mainrepodir tmprepodir bare) cleanup
|
withtmpclonerepo bare a = do
|
||||||
|
dir <- tmprepodir
|
||||||
|
bracket (clonerepo mainrepodir dir bare) cleanup a
|
||||||
|
|
||||||
withgitrepo :: (FilePath -> Assertion) -> Assertion
|
withgitrepo :: (FilePath -> Assertion) -> Assertion
|
||||||
withgitrepo = bracket (setuprepo mainrepodir) return
|
withgitrepo = bracket (setuprepo mainrepodir) return
|
||||||
|
@ -922,11 +954,18 @@ changeToTmpDir t = do
|
||||||
tmpdir :: String
|
tmpdir :: String
|
||||||
tmpdir = ".t"
|
tmpdir = ".t"
|
||||||
|
|
||||||
mainrepodir :: String
|
mainrepodir :: FilePath
|
||||||
mainrepodir = tmpdir ++ "/repo"
|
mainrepodir = tmpdir ++ "/repo"
|
||||||
|
|
||||||
tmprepodir :: String
|
tmprepodir :: IO FilePath
|
||||||
tmprepodir = tmpdir ++ "/tmprepo"
|
tmprepodir = go (0 :: Int)
|
||||||
|
where
|
||||||
|
go n = do
|
||||||
|
let d = tmpdir ++ "/tmprepo" ++ show n
|
||||||
|
ifM (doesDirectoryExist d)
|
||||||
|
( go $ n + 1
|
||||||
|
, return d
|
||||||
|
)
|
||||||
|
|
||||||
annexedfile :: String
|
annexedfile :: String
|
||||||
annexedfile = "foo"
|
annexedfile = "foo"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue