Mercurial > hgsubversion
comparison tests/comprehensive/test_verify_and_startrev.py @ 886:d3ff5807f1bd
fold test_startrev and test_verify into a new test; test_verify_and_startrev
| author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
|---|---|
| date | Sat, 12 May 2012 11:12:57 +0200 |
| parents | tests/comprehensive/test_verify.py@312b37bc5e20 |
| children | c6388ed0ec0a |
comparison
equal
deleted
inserted
replaced
| 885:99a15c6a283c | 886:d3ff5807f1bd |
|---|---|
| 1 import os | |
| 2 import pickle | |
| 3 import sys | |
| 4 import unittest | |
| 5 | |
| 6 # wrapped in a try/except because of weirdness in how | |
| 7 # run.py works as compared to nose. | |
| 8 try: | |
| 9 import test_util | |
| 10 except ImportError: | |
| 11 sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) | |
| 12 import test_util | |
| 13 | |
| 14 from mercurial import hg | |
| 15 from mercurial import ui | |
| 16 | |
| 17 from hgsubversion import svncommands | |
| 18 | |
| 19 # these fixtures contain no files at HEAD and would result in empty clones | |
| 20 _skipshallow = set([ | |
| 21 'binaryfiles.svndump', | |
| 22 'binaryfiles-broken.svndump', | |
| 23 'emptyrepo.svndump', | |
| 24 ]) | |
| 25 | |
| 26 def _do_case(self, name, stupid, layout): | |
| 27 subdir = test_util.subdir.get(name, '') | |
| 28 repo, svnpath = self.load_and_fetch(name, subdir=subdir, stupid=stupid, | |
| 29 layout=layout) | |
| 30 assert len(self.repo) > 0 | |
| 31 for i in repo: | |
| 32 ctx = repo[i] | |
| 33 self.assertEqual(svncommands.verify(repo.ui, repo, rev=ctx.node()), 0) | |
| 34 | |
| 35 # check a startrev clone | |
| 36 if layout == 'single' and name not in _skipshallow: | |
| 37 self.wc_path += '_shallow' | |
| 38 shallowrepo = self.fetch(svnpath, subdir=subdir, stupid=stupid, | |
| 39 layout='single', startrev='HEAD') | |
| 40 | |
| 41 self.assertEqual(len(shallowrepo), 1, | |
| 42 "shallow clone should have just one revision, not %d" | |
| 43 % len(shallowrepo)) | |
| 44 | |
| 45 fulltip = repo['tip'] | |
| 46 shallowtip = shallowrepo['tip'] | |
| 47 | |
| 48 self.assertEqual(0, svncommands.verify(repo.ui, shallowrepo, | |
| 49 rev=shallowtip.node())) | |
| 50 | |
| 51 # viewing diff's of lists of files is easier on the eyes | |
| 52 self.assertMultiLineEqual('\n'.join(fulltip), '\n'.join(shallowtip)) | |
| 53 | |
| 54 for f in fulltip: | |
| 55 self.assertMultiLineEqual(fulltip[f].data(), shallowtip[f].data()) | |
| 56 | |
| 57 | |
| 58 def buildmethod(case, name, stupid, layout): | |
| 59 m = lambda self: self._do_case(case, stupid, layout) | |
| 60 m.__name__ = name | |
| 61 bits = case, stupid and 'stupid' or 'real', layout | |
| 62 m.__doc__ = 'Test verify on %s with %s replay. (%s)' % bits | |
| 63 return m | |
| 64 | |
| 65 attrs = {'_do_case': _do_case} | |
| 66 fixtures = [f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')] | |
| 67 for case in fixtures: | |
| 68 # this fixture results in an empty repository, don't use it | |
| 69 if case == 'project_root_not_repo_root.svndump': | |
| 70 continue | |
| 71 bname = 'test_' + case[:-len('.svndump')] | |
| 72 attrs[bname] = buildmethod(case, bname, False, 'standard') | |
| 73 name = bname + '_stupid' | |
| 74 attrs[name] = buildmethod(case, name, True, 'standard') | |
| 75 name = bname + '_single' | |
| 76 attrs[name] = buildmethod(case, name, False, 'single') | |
| 77 # Disabled because the "stupid and real are the same" tests | |
| 78 # verify this plus even more. | |
| 79 # name = bname + '_single_stupid' | |
| 80 # attrs[name] = buildmethod(case, name, True, 'single') | |
| 81 | |
| 82 VerifyTests = type('VerifyTests', (test_util.TestBase,), attrs) | |
| 83 | |
| 84 def suite(): | |
| 85 all_tests = [unittest.TestLoader().loadTestsFromTestCase(VerifyTests)] | |
| 86 return unittest.TestSuite(all_tests) |
