Mercurial > hgsubversion
comparison tests/test_push_command.py @ 24:5954a514ae26
Pushing fails in 1.4's SWIG bindings, so double check for that in the test.
| author | Augie Fackler <durin42@gmail.com> |
|---|---|
| date | Thu, 09 Oct 2008 23:36:20 -0500 |
| parents | 48a44546c12f |
| children | b66ed66c82e4 |
comparison
equal
deleted
inserted
replaced
| 23:1f8854804795 | 24:5954a514ae26 |
|---|---|
| 10 from mercurial import revlog | 10 from mercurial import revlog |
| 11 | 11 |
| 12 import fetch_command | 12 import fetch_command |
| 13 import push_cmd | 13 import push_cmd |
| 14 import test_util | 14 import test_util |
| 15 # push fails in 1.4-SWIG-land. | |
| 16 push_works = False | |
| 17 try: | |
| 18 import csvn | |
| 19 push_works = True | |
| 20 except ImportError: | |
| 21 from svn import core | |
| 22 if (core.SVN_VER_MAJOR, core.SVN_VER_MINOR, core.SVN_VER_MICRO) >= (1, 5, 0): | |
| 23 push_works = True | |
| 15 | 24 |
| 16 class PushTests(unittest.TestCase): | 25 if push_works: |
| 17 def setUp(self): | 26 class PushTests(unittest.TestCase): |
| 18 self.oldwd = os.getcwd() | 27 def setUp(self): |
| 19 self.tmpdir = tempfile.mkdtemp('svnwrap_test') | 28 self.oldwd = os.getcwd() |
| 20 self.repo_path = '%s/testrepo' % self.tmpdir | 29 self.tmpdir = tempfile.mkdtemp('svnwrap_test') |
| 21 self.wc_path = '%s/testrepo_wc' % self.tmpdir | 30 self.repo_path = '%s/testrepo' % self.tmpdir |
| 22 test_util.load_svndump_fixture(self.repo_path, 'simple_branch.svndump') | 31 self.wc_path = '%s/testrepo_wc' % self.tmpdir |
| 23 fetch_command.fetch_revisions(ui.ui(), | 32 test_util.load_svndump_fixture(self.repo_path, 'simple_branch.svndump') |
| 24 svn_url='file://%s' % self.repo_path, | 33 fetch_command.fetch_revisions(ui.ui(), |
| 25 hg_repo_path=self.wc_path) | 34 svn_url='file://%s' % self.repo_path, |
| 35 hg_repo_path=self.wc_path) | |
| 26 | 36 |
| 27 # define this as a property so that it reloads anytime we need it | 37 # define this as a property so that it reloads anytime we need it |
| 28 @property | 38 @property |
| 29 def repo(self): | 39 def repo(self): |
| 30 return hg.repository(ui.ui(), self.wc_path) | 40 return hg.repository(ui.ui(), self.wc_path) |
| 31 | 41 |
| 32 def tearDown(self): | 42 def tearDown(self): |
| 33 shutil.rmtree(self.tmpdir) | 43 shutil.rmtree(self.tmpdir) |
| 34 os.chdir(self.oldwd) | 44 os.chdir(self.oldwd) |
| 35 | 45 |
| 36 def test_push_to_default(self, commit=True): | 46 def test_push_to_default(self, commit=True): |
| 37 repo = self.repo | 47 repo = self.repo |
| 38 old_tip = repo['tip'].node() | 48 old_tip = repo['tip'].node() |
| 39 expected_parent = repo['default'].node() | 49 expected_parent = repo['default'].node() |
| 40 def file_callback(repo, memctx, path): | 50 def file_callback(repo, memctx, path): |
| 41 if path == 'adding_file': | 51 if path == 'adding_file': |
| 42 return context.memfilectx(path=path, | 52 return context.memfilectx(path=path, |
| 43 data='foo', | 53 data='foo', |
| 44 islink=False, | 54 islink=False, |
| 45 isexec=False, | 55 isexec=False, |
| 46 copied=False) | 56 copied=False) |
| 47 raise IOError() | 57 raise IOError() |
| 48 ctx = context.memctx(repo, | 58 ctx = context.memctx(repo, |
| 49 (repo['default'].node(), node.nullid), | 59 (repo['default'].node(), node.nullid), |
| 50 'automated test', | 60 'automated test', |
| 51 ['adding_file'], | 61 ['adding_file'], |
| 52 file_callback, | 62 file_callback, |
| 53 'an_author', | 63 'an_author', |
| 54 '2008-10-07 20:59:48 -0500', | 64 '2008-10-07 20:59:48 -0500', |
| 55 {'branch': 'default',}) | 65 {'branch': 'default',}) |
| 56 new_hash = repo.commitctx(ctx) | 66 new_hash = repo.commitctx(ctx) |
| 57 if not commit: | 67 if not commit: |
| 58 return # some tests use this test as an extended setup. | 68 return # some tests use this test as an extended setup. |
| 59 hg.update(repo, repo['tip'].node()) | 69 hg.update(repo, repo['tip'].node()) |
| 60 push_cmd.push_revisions_to_subversion(ui.ui(), repo=self.repo, | 70 push_cmd.push_revisions_to_subversion(ui.ui(), repo=self.repo, |
| 61 hg_repo_path=self.wc_path, | 71 hg_repo_path=self.wc_path, |
| 62 svn_url='file://'+self.repo_path) | 72 svn_url='file://'+self.repo_path) |
| 63 tip = self.repo['tip'] | 73 tip = self.repo['tip'] |
| 64 self.assertNotEqual(tip.node(), old_tip) | 74 self.assertNotEqual(tip.node(), old_tip) |
| 65 self.assertEqual(tip.parents()[0].node(), expected_parent) | 75 self.assertEqual(tip.parents()[0].node(), expected_parent) |
| 66 self.assertEqual(tip['adding_file'].data(), 'foo') | 76 self.assertEqual(tip['adding_file'].data(), 'foo') |
| 67 self.assertEqual(tip.branch(), 'default') | 77 self.assertEqual(tip.branch(), 'default') |
| 68 | 78 |
| 69 def test_push_two_revs(self): | 79 def test_push_two_revs(self): |
| 70 # set up some work for us | 80 # set up some work for us |
| 71 self.test_push_to_default(commit=False) | 81 self.test_push_to_default(commit=False) |
| 72 repo = self.repo | 82 repo = self.repo |
| 73 old_tip = repo['tip'].node() | 83 old_tip = repo['tip'].node() |
| 74 expected_parent = repo['tip'].parents()[0].node() | 84 expected_parent = repo['tip'].parents()[0].node() |
| 75 def file_callback(repo, memctx, path): | 85 def file_callback(repo, memctx, path): |
| 76 if path == 'adding_file2': | 86 if path == 'adding_file2': |
| 77 return context.memfilectx(path=path, | 87 return context.memfilectx(path=path, |
| 78 data='foo2', | 88 data='foo2', |
| 79 islink=False, | 89 islink=False, |
| 80 isexec=False, | 90 isexec=False, |
| 81 copied=False) | 91 copied=False) |
| 82 raise IOError() | 92 raise IOError() |
| 83 ctx = context.memctx(repo, | 93 ctx = context.memctx(repo, |
| 84 (repo['default'].node(), node.nullid), | 94 (repo['default'].node(), node.nullid), |
| 85 'automated test', | 95 'automated test', |
| 86 ['adding_file2'], | 96 ['adding_file2'], |
| 87 file_callback, | 97 file_callback, |
| 88 'an_author', | 98 'an_author', |
| 89 '2008-10-07 20:59:48 -0500', | 99 '2008-10-07 20:59:48 -0500', |
| 90 {'branch': 'default',}) | 100 {'branch': 'default',}) |
| 91 new_hash = repo.commitctx(ctx) | 101 new_hash = repo.commitctx(ctx) |
| 92 hg.update(repo, repo['tip'].node()) | 102 hg.update(repo, repo['tip'].node()) |
| 93 push_cmd.push_revisions_to_subversion(ui.ui(), repo=self.repo, | 103 push_cmd.push_revisions_to_subversion(ui.ui(), repo=self.repo, |
| 94 hg_repo_path=self.wc_path, | 104 hg_repo_path=self.wc_path, |
| 95 svn_url='file://'+self.repo_path) | 105 svn_url='file://'+self.repo_path) |
| 96 tip = self.repo['tip'] | 106 tip = self.repo['tip'] |
| 97 self.assertNotEqual(tip.node(), old_tip) | 107 self.assertNotEqual(tip.node(), old_tip) |
| 98 self.assertNotEqual(tip.parents()[0].node(), old_tip) | 108 self.assertNotEqual(tip.parents()[0].node(), old_tip) |
| 99 self.assertEqual(tip.parents()[0].parents()[0].node(), expected_parent) | 109 self.assertEqual(tip.parents()[0].parents()[0].node(), expected_parent) |
| 100 self.assertEqual(tip['adding_file2'].data(), 'foo2') | 110 self.assertEqual(tip['adding_file2'].data(), 'foo2') |
| 101 self.assertEqual(tip['adding_file'].data(), 'foo') | 111 self.assertEqual(tip['adding_file'].data(), 'foo') |
| 102 self.assertEqual(tip.parents()[0]['adding_file'].data(), 'foo') | 112 self.assertEqual(tip.parents()[0]['adding_file'].data(), 'foo') |
| 103 try: | 113 try: |
| 104 self.assertEqual(tip.parents()[0]['adding_file2'].data(), 'foo') | 114 self.assertEqual(tip.parents()[0]['adding_file2'].data(), 'foo') |
| 105 assert False, "this is impossible, adding_file2 should not be in this manifest." | 115 assert False, "this is impossible, adding_file2 should not be in this manifest." |
| 106 except revlog.LookupError, e: | 116 except revlog.LookupError, e: |
| 107 pass | 117 pass |
| 108 self.assertEqual(tip.branch(), 'default') | 118 self.assertEqual(tip.branch(), 'default') |
| 109 | 119 |
| 110 def test_push_to_branch(self): | 120 def test_push_to_branch(self): |
| 111 repo = self.repo | 121 repo = self.repo |
| 112 def file_callback(repo, memctx, path): | 122 def file_callback(repo, memctx, path): |
| 113 if path == 'adding_file': | 123 if path == 'adding_file': |
| 114 return context.memfilectx(path=path, | 124 return context.memfilectx(path=path, |
| 115 data='foo', | 125 data='foo', |
| 116 islink=False, | 126 islink=False, |
| 117 isexec=False, | 127 isexec=False, |
| 118 copied=False) | 128 copied=False) |
| 119 raise IOError() | 129 raise IOError() |
| 120 ctx = context.memctx(repo, | 130 ctx = context.memctx(repo, |
| 121 (repo['the_branch'].node(), node.nullid), | 131 (repo['the_branch'].node(), node.nullid), |
| 122 'automated test', | 132 'automated test', |
| 123 ['adding_file'], | 133 ['adding_file'], |
| 124 file_callback, | 134 file_callback, |
| 125 'an_author', | 135 'an_author', |
| 126 '2008-10-07 20:59:48 -0500', | 136 '2008-10-07 20:59:48 -0500', |
| 127 {'branch': 'the_branch',}) | 137 {'branch': 'the_branch',}) |
| 128 new_hash = repo.commitctx(ctx) | 138 new_hash = repo.commitctx(ctx) |
| 129 push_cmd.push_revisions_to_subversion(ui.ui(), repo=self.repo, | 139 push_cmd.push_revisions_to_subversion(ui.ui(), repo=self.repo, |
| 130 hg_repo_path=self.wc_path, | 140 hg_repo_path=self.wc_path, |
| 131 svn_url='file://'+self.repo_path) | 141 svn_url='file://'+self.repo_path) |
| 132 tip = self.repo['tip'] | 142 tip = self.repo['tip'] |
| 133 self.assertEqual(tip['adding_file'].data(), 'foo') | 143 self.assertEqual(tip['adding_file'].data(), 'foo') |
| 134 self.assertEqual(tip.branch(), 'the_branch') | 144 self.assertEqual(tip.branch(), 'the_branch') |
| 135 | 145 |
| 136 # | 146 # |
| 137 # def test_delete_file(self): | 147 # def test_delete_file(self): |
| 138 # assert False | 148 # assert False |
| 139 # | 149 # |
| 142 # | 152 # |
| 143 # def test_push_symlink_file(self): | 153 # def test_push_symlink_file(self): |
| 144 # assert False | 154 # assert False |
| 145 | 155 |
| 146 def suite(): | 156 def suite(): |
| 147 return unittest.TestLoader().loadTestsFromTestCase(PushTests) | 157 if push_works: |
| 158 return unittest.TestLoader().loadTestsFromTestCase(PushTests) | |
| 159 return [] | |
| 160 |
