Mercurial > hgsubversion
comparison tests/test_utility_commands.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 | cd0d14e25757 |
| children | e73df57b2b07 |
comparison
equal
deleted
inserted
replaced
| 1020:b5b1fce26f1f | 1106:5cb6c95e0283 |
|---|---|
| 29 | 29 |
| 30 def repourl(repo_path): | 30 def repourl(repo_path): |
| 31 return util.normalize_url(test_util.fileurl(repo_path)) | 31 return util.normalize_url(test_util.fileurl(repo_path)) |
| 32 | 32 |
| 33 class UtilityTests(test_util.TestBase): | 33 class UtilityTests(test_util.TestBase): |
| 34 def test_info_output(self): | 34 stupid_mode_tests = True |
| 35 repo, repo_path = self.load_and_fetch('two_heads.svndump') | 35 |
| 36 def test_info_output(self, custom=False): | |
| 37 if custom: | |
| 38 config = { | |
| 39 'hgsubversionbranch.default': 'trunk', | |
| 40 'hgsubversionbranch.the_branch': 'branches/the_branch', | |
| 41 } | |
| 42 else: | |
| 43 config = {} | |
| 44 repo, repo_path = self.load_and_fetch('two_heads.svndump', config=config) | |
| 36 hg.update(self.repo, 'the_branch') | 45 hg.update(self.repo, 'the_branch') |
| 37 u = self.ui() | 46 u = self.ui() |
| 38 u.pushbuffer() | 47 u.pushbuffer() |
| 39 svncommands.info(u, self.repo) | 48 svncommands.info(u, self.repo) |
| 40 actual = u.popbuffer() | 49 actual = u.popbuffer() |
| 83 'branch': 'trunk', | 92 'branch': 'trunk', |
| 84 'rev': 6, | 93 'rev': 6, |
| 85 }) | 94 }) |
| 86 self.assertMultiLineEqual(actual, expected) | 95 self.assertMultiLineEqual(actual, expected) |
| 87 | 96 |
| 88 def test_info_single(self): | 97 def test_info_output_custom(self): |
| 89 repo, repo_path = self.load_and_fetch('two_heads.svndump', subdir='trunk') | 98 self.test_info_output(custom=True) |
| 99 | |
| 100 def test_info_single(self, custom=False): | |
| 101 if custom: | |
| 102 subdir=None | |
| 103 config = { | |
| 104 'hgsubversionbranch.default': 'trunk/' | |
| 105 } | |
| 106 else: | |
| 107 subdir='trunk' | |
| 108 config = {} | |
| 109 repo, repo_path = self.load_and_fetch('two_heads.svndump', | |
| 110 subdir=subdir, | |
| 111 config=config) | |
| 90 hg.update(self.repo, 'tip') | 112 hg.update(self.repo, 'tip') |
| 91 u = self.ui() | 113 u = self.ui() |
| 92 u.pushbuffer() | 114 u.pushbuffer() |
| 93 svncommands.info(u, self.repo) | 115 svncommands.info(u, self.repo) |
| 94 actual = u.popbuffer() | 116 actual = u.popbuffer() |
| 98 'branch': 'trunk', | 120 'branch': 'trunk', |
| 99 'rev': 6, | 121 'rev': 6, |
| 100 }) | 122 }) |
| 101 self.assertMultiLineEqual(expected, actual) | 123 self.assertMultiLineEqual(expected, actual) |
| 102 | 124 |
| 125 def test_info_custom_single(self): | |
| 126 self.test_info_single(custom=True) | |
| 127 | |
| 103 def test_missing_metadata(self): | 128 def test_missing_metadata(self): |
| 104 self._load_fixture_and_fetch('two_heads.svndump') | 129 self._load_fixture_and_fetch('two_heads.svndump') |
| 130 os.remove(self.repo.join('svn/branch_info')) | |
| 131 svncommands.updatemeta(self.ui(), self.repo, []) | |
| 132 | |
| 105 test_util.rmtree(self.repo.join('svn')) | 133 test_util.rmtree(self.repo.join('svn')) |
| 106 self.assertRaises(hgutil.Abort, | 134 self.assertRaises(hgutil.Abort, |
| 107 self.repo.svnmeta) | 135 self.repo.svnmeta) |
| 108 self.assertRaises(hgutil.Abort, | 136 self.assertRaises(hgutil.Abort, |
| 109 svncommands.info, | 137 svncommands.info, |
| 225 wrappers.rebase(rebase.rebase, self.ui(), self.repo, svn=True) | 253 wrappers.rebase(rebase.rebase, self.ui(), self.repo, svn=True) |
| 226 self.assertEqual(self.repo['tip'].branch(), 'localbranch') | 254 self.assertEqual(self.repo['tip'].branch(), 'localbranch') |
| 227 self.assertEqual(self.repo['tip'].parents()[0].parents()[0], self.repo[0]) | 255 self.assertEqual(self.repo['tip'].parents()[0].parents()[0], self.repo[0]) |
| 228 self.assertNotEqual(beforerebasehash, self.repo['tip'].node()) | 256 self.assertNotEqual(beforerebasehash, self.repo['tip'].node()) |
| 229 | 257 |
| 230 def test_genignore(self): | 258 def test_genignore(self, layout='auto'): |
| 231 """ Test generation of .hgignore file. """ | 259 """ Test generation of .hgignore file. """ |
| 232 repo = self._load_fixture_and_fetch('ignores.svndump', noupdate=False) | 260 if layout == 'custom': |
| 261 config = { | |
| 262 'hgsubversionbranch.default': 'trunk', | |
| 263 } | |
| 264 else: | |
| 265 config = {} | |
| 266 repo = self._load_fixture_and_fetch('ignores.svndump', | |
| 267 layout=layout, | |
| 268 noupdate=False, | |
| 269 config=config) | |
| 233 u = self.ui() | 270 u = self.ui() |
| 234 u.pushbuffer() | 271 u.pushbuffer() |
| 235 svncommands.genignore(u, repo, self.wc_path) | 272 svncommands.genignore(u, repo, self.wc_path) |
| 236 self.assertMultiLineEqual(open(os.path.join(self.wc_path, '.hgignore')).read(), | 273 self.assertMultiLineEqual(open(os.path.join(self.wc_path, '.hgignore')).read(), |
| 237 '.hgignore\nsyntax:glob\nblah\notherblah\nbaz/magic\n') | 274 '.hgignore\nsyntax:glob\nblah\notherblah\nbaz/magic\n') |
| 238 | 275 |
| 239 def test_genignore_single(self): | 276 def test_genignore_single(self): |
| 240 self._load_fixture_and_fetch('ignores.svndump', subdir='trunk') | 277 self.test_genignore(layout='single') |
| 241 hg.update(self.repo, 'tip') | 278 |
| 242 u = self.ui() | 279 def test_genignore_custom(self): |
| 243 u.pushbuffer() | 280 self.test_genignore(layout='custom') |
| 244 svncommands.genignore(u, self.repo, self.wc_path) | |
| 245 self.assertMultiLineEqual(open(os.path.join(self.wc_path, '.hgignore')).read(), | |
| 246 '.hgignore\nsyntax:glob\nblah\notherblah\nbaz/magic\n') | |
| 247 | 281 |
| 248 def test_list_authors(self): | 282 def test_list_authors(self): |
| 249 repo_path = self.load_svndump('replace_trunk_with_branch.svndump') | 283 repo_path = self.load_svndump('replace_trunk_with_branch.svndump') |
| 250 u = self.ui() | 284 u = self.ui() |
| 251 u.pushbuffer() | 285 u.pushbuffer() |
| 261 svncommands.listauthors(self.ui(), | 295 svncommands.listauthors(self.ui(), |
| 262 args=[test_util.fileurl(repo_path)], | 296 args=[test_util.fileurl(repo_path)], |
| 263 authors=author_path) | 297 authors=author_path) |
| 264 self.assertMultiLineEqual(open(author_path).read(), 'Augie=\nevil=\n') | 298 self.assertMultiLineEqual(open(author_path).read(), 'Augie=\nevil=\n') |
| 265 | 299 |
| 266 def test_svnverify(self, stupid=False): | 300 def test_svnverify(self): |
| 267 repo, repo_path = self.load_and_fetch('binaryfiles.svndump', | 301 repo, repo_path = self.load_and_fetch('binaryfiles.svndump', |
| 268 noupdate=False, stupid=stupid) | 302 noupdate=False) |
| 269 ret = verify.verify(self.ui(), repo, [], rev=1, stupid=stupid) | 303 ret = verify.verify(self.ui(), repo, [], rev=1) |
| 270 self.assertEqual(0, ret) | 304 self.assertEqual(0, ret) |
| 271 repo_path = self.load_svndump('binaryfiles-broken.svndump') | 305 repo_path = self.load_svndump('binaryfiles-broken.svndump') |
| 272 u = self.ui() | 306 u = self.ui() |
| 273 u.pushbuffer() | 307 u.pushbuffer() |
| 274 ret = verify.verify(u, repo, [test_util.fileurl(repo_path)], | 308 ret = verify.verify(u, repo, [test_util.fileurl(repo_path)], |
| 275 rev=1, stupid=stupid) | 309 rev=1) |
| 276 output = u.popbuffer() | 310 output = u.popbuffer() |
| 277 self.assertEqual(1, ret) | 311 self.assertEqual(1, ret) |
| 278 output = re.sub(r'file://\S+', 'file://', output) | 312 output = re.sub(r'file://\S+', 'file://', output) |
| 279 self.assertMultiLineEqual("""\ | 313 self.assertMultiLineEqual("""\ |
| 280 verifying d51f46a715a1 against file:// | 314 verifying d51f46a715a1 against file:// |
| 281 difference in: binary2 | 315 difference in: binary2 |
| 282 unexpected file: binary1 | 316 unexpected file: binary1 |
| 283 missing file: binary3 | 317 missing file: binary3 |
| 284 """, output) | 318 """, output) |
| 285 | 319 |
| 286 def test_svnverify_stupid(self): | 320 def test_corruption(self): |
| 287 self.test_svnverify(True) | |
| 288 | |
| 289 def test_corruption(self, stupid=False): | |
| 290 SUCCESS = 0 | 321 SUCCESS = 0 |
| 291 FAILURE = 1 | 322 FAILURE = 1 |
| 292 | 323 |
| 293 repo, repo_path = self.load_and_fetch('correct.svndump', layout='single', | 324 repo, repo_path = self.load_and_fetch('correct.svndump', layout='single', |
| 294 subdir='', stupid=stupid) | 325 subdir='') |
| 295 | 326 |
| 296 ui = self.ui() | 327 ui = self.ui() |
| 297 | 328 |
| 298 self.assertEqual(SUCCESS, verify.verify(ui, self.repo, rev='tip', | 329 self.assertEqual(SUCCESS, verify.verify(ui, self.repo, rev='tip')) |
| 299 stupid=stupid)) | |
| 300 | 330 |
| 301 corrupt_source = test_util.fileurl(self.load_svndump('corrupt.svndump')) | 331 corrupt_source = test_util.fileurl(self.load_svndump('corrupt.svndump')) |
| 302 | 332 |
| 303 repo.ui.setconfig('paths', 'default', corrupt_source) | 333 repo.ui.setconfig('paths', 'default', corrupt_source) |
| 304 | 334 |
| 320 'unexpected file: empty-file', | 350 'unexpected file: empty-file', |
| 321 ]) | 351 ]) |
| 322 | 352 |
| 323 self.assertEqual((FAILURE, expected), (code, actual)) | 353 self.assertEqual((FAILURE, expected), (code, actual)) |
| 324 | 354 |
| 325 def test_corruption_stupid(self): | |
| 326 self.test_corruption(True) | |
| 327 | |
| 328 def test_svnrebuildmeta(self): | 355 def test_svnrebuildmeta(self): |
| 329 otherpath = self.load_svndump('binaryfiles-broken.svndump') | 356 otherpath = self.load_svndump('binaryfiles-broken.svndump') |
| 330 otherurl = test_util.fileurl(otherpath) | 357 otherurl = test_util.fileurl(otherpath) |
| 331 self.load_and_fetch('replace_trunk_with_branch.svndump') | 358 self.load_and_fetch('replace_trunk_with_branch.svndump') |
| 332 # rebuildmeta with original repo | 359 # rebuildmeta with original repo |
| 336 svncommands.rebuildmeta, | 363 svncommands.rebuildmeta, |
| 337 self.ui(), repo=self.repo, args=[otherurl]) | 364 self.ui(), repo=self.repo, args=[otherurl]) |
| 338 # rebuildmeta --unsafe-skip-uuid-check with unrelated repo | 365 # rebuildmeta --unsafe-skip-uuid-check with unrelated repo |
| 339 svncommands.rebuildmeta(self.ui(), repo=self.repo, args=[otherurl], | 366 svncommands.rebuildmeta(self.ui(), repo=self.repo, args=[otherurl], |
| 340 unsafe_skip_uuid_check=True) | 367 unsafe_skip_uuid_check=True) |
| 341 | |
| 342 def suite(): | |
| 343 all_tests = [unittest.TestLoader().loadTestsFromTestCase(UtilityTests), | |
| 344 ] | |
| 345 return unittest.TestSuite(all_tests) |
