diff tests/test_fetch_branches.py @ 1106:5cb6c95e0283 stable

Merge default and stable so I can do stable releases again.
author Augie Fackler <raf@durin42.com>
date Tue, 11 Feb 2014 12:48:49 -0500
parents 6e1dbf6cbc92
children ba8485b9fee0
line wrap: on
line diff
--- a/tests/test_fetch_branches.py
+++ b/tests/test_fetch_branches.py
@@ -2,11 +2,15 @@ import test_util
 
 import unittest
 
+from mercurial import error
 from mercurial import hg
 from mercurial import node
-from mercurial import util as hgutil
+
+from hgsubversion import compathacks
 
 class TestFetchBranches(test_util.TestBase):
+    stupid_mode_tests = True
+
     def _load_fixture_and_fetch_with_anchor(self, fixture_name, anchor):
         repo_path = self.load_svndump(fixture_name)
         source = '%s#%s' % (test_util.fileurl(repo_path), anchor)
@@ -24,43 +28,31 @@ class TestFetchBranches(test_util.TestBa
     def openbranches(self, repo):
         return self.branches(repo)[0]
 
-    def test_rename_branch_parent(self, stupid=False):
-        repo = self._load_fixture_and_fetch('rename_branch_parent_dir.svndump',
-                                            stupid=stupid)
+    def test_rename_branch_parent(self):
+        repo = self._load_fixture_and_fetch('rename_branch_parent_dir.svndump')
         heads = [repo[n] for n in repo.heads()]
         heads = dict([(ctx.branch(), ctx) for ctx in heads])
         # Let these tests disabled yet as the fix is not obvious
         self.assertEqual(['dev_branch'], self.openbranches(repo))
 
-    def test_rename_branch_parent_stupid(self):
-        self.test_rename_branch_parent(stupid=True)
-
-    def test_unrelatedbranch(self, stupid=False):
-        repo = self._load_fixture_and_fetch('unrelatedbranch.svndump',
-                                            stupid=stupid)
+    def test_unrelatedbranch(self):
+        repo = self._load_fixture_and_fetch('unrelatedbranch.svndump')
         heads = [repo[n] for n in repo.heads()]
         heads = dict([(ctx.branch(), ctx) for ctx in heads])
         # Let these tests disabled yet as the fix is not obvious
         self.assertEqual(heads['branch1'].manifest().keys(), ['b'])
         self.assertEqual(heads['branch2'].manifest().keys(), ['a', 'b'])
 
-    def test_unrelatedbranch_stupid(self):
-        self.test_unrelatedbranch(True)
-
-    def test_unorderedbranch(self, stupid=False):
-        repo = self._load_fixture_and_fetch('unorderedbranch.svndump',
-                                            stupid=stupid)
+    def test_unorderedbranch(self):
+        repo = self._load_fixture_and_fetch('unorderedbranch.svndump')
         r = repo['branch']
         self.assertEqual(0, r.parents()[0].rev())
         self.assertEqual(['a', 'c', 'z'], sorted(r.manifest()))
 
-    def test_unorderedbranch_stupid(self):
-        self.test_unorderedbranch(True)
-
-    def test_renamed_branch_to_trunk(self, stupid=False):
+    def test_renamed_branch_to_trunk(self):
         config = {'hgsubversion.failonmissing': 'true'}
         repo = self._load_fixture_and_fetch('branch_rename_to_trunk.svndump',
-                                            stupid=stupid, config=config)
+                                            config=config)
         self.assertEqual(repo['default'].parents()[0].branch(), 'dev_branch')
         self.assert_('iota' in repo['default'])
         self.assertEqual(repo['old_trunk'].parents()[0].branch(), 'default')
@@ -68,56 +60,40 @@ class TestFetchBranches(test_util.TestBa
         expected = ['default', 'old_trunk']
         self.assertEqual(self.openbranches(repo), expected)
 
-    def test_renamed_branch_to_trunk_stupid(self):
-        self.test_renamed_branch_to_trunk(stupid=True)
-
-    def test_replace_trunk_with_branch(self, stupid=False):
-        repo = self._load_fixture_and_fetch('replace_trunk_with_branch.svndump',
-                                            stupid=stupid)
+    def test_replace_trunk_with_branch(self):
+        repo = self._load_fixture_and_fetch('replace_trunk_with_branch.svndump')
         self.assertEqual(repo['default'].parents()[0].branch(), 'test')
         self.assertEqual(repo['tip'].branch(), 'default')
         self.assertEqual(repo['tip'].extra().get('close'), '1')
         self.assertEqual(self.openbranches(repo), ['default'])
 
-    def test_copybeforeclose(self, stupid=False):
-        repo = self._load_fixture_and_fetch('copybeforeclose.svndump',
-                                            stupid=stupid)
+    def test_copybeforeclose(self):
+        repo = self._load_fixture_and_fetch('copybeforeclose.svndump')
         self.assertEqual(repo['tip'].branch(), 'test')
         self.assertEqual(repo['test'].extra().get('close'), '1')
         self.assertEqual(repo['test']['b'].data(), 'a\n')
 
-    def test_copybeforeclose_stupid(self):
-        self.test_copybeforeclose(True)
-
-    def test_replace_trunk_with_branch_stupid(self):
-        self.test_replace_trunk_with_branch(stupid=True)
-
-    def test_branch_create_with_dir_delete_works(self, stupid=False):
-        repo = self._load_fixture_and_fetch('branch_create_with_dir_delete.svndump',
-                                            stupid=stupid)
+    def test_branch_create_with_dir_delete_works(self):
+        repo = self._load_fixture_and_fetch('branch_create_with_dir_delete.svndump')
         self.assertEqual(repo['tip'].manifest().keys(),
                          ['alpha', 'beta', 'iota', 'gamma', ])
 
-    def test_branch_tip_update_to_default(self, stupid=False):
+    def test_branch_tip_update_to_default(self):
         repo = self._load_fixture_and_fetch('unorderedbranch.svndump',
-                                            stupid=stupid, noupdate=False)
+                                            noupdate=False)
         self.assertEqual(repo[None].branch(), 'default')
         self.assertTrue('tip' not in repo[None].tags())
 
-    def test_branch_tip_update_to_default_stupid(self):
-        self.test_branch_tip_update_to_default(True)
-
     def test_branch_pull_anchor(self):
-        self.assertRaises(hgutil.Abort,
+        self.assertRaises(error.RepoLookupError,
                           self._load_fixture_and_fetch_with_anchor,
                           'unorderedbranch.svndump', 'NaN')
         repo = self._load_fixture_and_fetch_with_anchor(
             'unorderedbranch.svndump', '4')
-        self.assertTrue('c' not in repo.branchtags())
+        self.assertTrue('c' not in compathacks.branchset(repo))
 
-    def test_branches_weird_moves(self, stupid=False):
+    def test_branches_weird_moves(self):
         repo = self._load_fixture_and_fetch('renamedproject.svndump',
-                                            stupid=stupid,
                                             subdir='project')
         heads = [repo[n] for n in repo.heads()]
         heads = dict((ctx.branch(), ctx) for ctx in heads)
@@ -126,21 +102,16 @@ class TestFetchBranches(test_util.TestBa
         self.assertEqual(mdefault, ['a', 'b', 'd/a'])
         self.assertEqual(mbranch, ['a'])
 
-    def test_branches_weird_moves_stupid(self):
-        self.test_branches_weird_moves(True)
-
-    def test_branch_delete_parent_dir(self, stupid=False):
-        repo = self._load_fixture_and_fetch('branch_delete_parent_dir.svndump',
-                                            stupid=stupid)
+    def test_branch_delete_parent_dir(self):
+        repo = self._load_fixture_and_fetch('branch_delete_parent_dir.svndump')
         openb, closedb = self.branches(repo)
         self.assertEqual(openb, [])
         self.assertEqual(closedb, ['dev_branch'])
         self.assertEqual(list(repo['dev_branch']), ['foo'])
 
-    def test_replace_branch_with_branch(self, stupid=False):
-        repo = self._load_fixture_and_fetch('replace_branch_with_branch.svndump',
-                                            stupid=stupid)
-        self.assertEqual(7, len(repo))
+    def test_replace_branch_with_branch(self):
+        repo = self._load_fixture_and_fetch('replace_branch_with_branch.svndump')
+        self.assertEqual(7, test_util.repolen(repo))
         # tip is former topological branch1 being closed
         ctx = repo['tip']
         self.assertEqual('1', ctx.extra().get('close', '0'))
@@ -159,8 +130,67 @@ class TestFetchBranches(test_util.TestBa
         for f in ctx:
             self.assertTrue(not ctx[f].renamed())
 
-    def test_replace_branch_with_branch_stupid(self, stupid=False):
-        self.test_replace_branch_with_branch(True)
+    def test_misspelled_branches_tags(self):
+        config = {
+            'hgsubversion.branchdir': 'branchez',
+            'hgsubversion.tagpaths': 'tagz',
+            }
+        '''Tests using the tags dir for branches and the branches dir for tags'''
+        repo = self._load_fixture_and_fetch('misspelled_branches_tags.svndump',
+                                            layout='standard',
+                                            config=config)
+
+        heads = set([repo[n].branch() for n in repo.heads()])
+        expected_heads = set(['default', 'branch'])
+
+        self.assertEqual(heads, expected_heads)
+
+        tags = set(repo.tags())
+        expected_tags = set(['tip', 'tag_from_trunk', 'tag_from_branch'])
+        self.assertEqual(tags, expected_tags)
+
+    def test_subdir_branches_tags(self):
+        '''Tests using the tags dir for branches and the branches dir for tags'''
+        config = {
+            'hgsubversion.branchdir': 'bran/ches',
+            'hgsubversion.tagpaths': 'ta/gs',
+            }
+        repo = self._load_fixture_and_fetch('subdir_branches_tags.svndump',
+                                            layout='standard',
+                                            config=config)
+
+        heads = set([repo[n].branch() for n in repo.heads()])
+        expected_heads = set(['default', 'branch'])
+
+        self.assertEqual(heads, expected_heads)
+
+        tags = set(repo.tags())
+        expected_tags = set(['tip', 'tag_from_trunk', 'tag_from_branch'])
+        self.assertEqual(tags, expected_tags)
+
+    def test_subproject_fetch(self):
+        config = {
+            'hgsubversion.infix': 'project',
+            }
+        repo = self._load_fixture_and_fetch('subprojects.svndump',
+                                            layout='standard',
+                                            config=config)
+
+        heads = set([repo[n].branch() for n in repo.heads()])
+        expected_heads = set(['default', 'branch'])
+        self.assertEqual(heads, expected_heads)
+
+        tags = set(repo.tags())
+        expected_tags = set(['tip', 'tag_from_trunk', 'tag_from_branch'])
+        self.assertEqual(tags, expected_tags)
+
+        for head in repo.heads():
+            ctx = repo[head]
+            self.assertFalse('project/file' in ctx, 'failed to strip infix')
+            self.assertTrue('file' in ctx, 'failed to track a simple file')
+            self.assertFalse('other/phile' in ctx, 'pulled in other project')
+            self.assertFalse('phile' in ctx, 'merged other project in repo')
+
 
 def suite():
     all_tests = [unittest.TestLoader().loadTestsFromTestCase(TestFetchBranches),