Mercurial > hgsubversion
view tests/comprehensive/test_stupid_pull.py @ 1002:117b3b421294
buildmeta: verify uuid when passed explicit url
2c87bdc43d3c changed buildmeta to read the uuid from local disk, if
it's available. As a side effect, it disabled the validation of the
uuid we've recorded locall in the commits against the uuid of the repo
we are building against. This is probably reasonable when someone
runs a bare updatemeta or rebuildmeta. I think it's a worthwhile
sanity check when someone passes an explicit repository url to
rebuild/updatemeta. This restores the validation in that case, and
fixes a failing test in the process.
author | David Schleimer <dschleimer@fb.com> |
---|---|
date | Fri, 12 Apr 2013 10:51:42 -0700 |
parents | 7d9cd708f412 |
children | d741f536f23a |
line wrap: on
line source
import os import pickle import sys import unittest from mercurial import hg from mercurial import ui # wrapped in a try/except because of weirdness in how # run.py works as compared to nose. try: import test_util except ImportError: sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) import test_util from hgsubversion import wrappers def _do_case(self, name, layout): subdir = test_util.subdir.get(name, '') repo, repo_path = self.load_and_fetch(name, subdir=subdir, stupid=False, layout=layout) assert len(self.repo) > 0, 'Repo had no changes, maybe you need to add a subdir entry in test_util?' wc2_path = self.wc_path + '_stupid' u = ui.ui() checkout_path = repo_path if subdir: checkout_path += '/' + subdir u.setconfig('hgsubversion', 'stupid', '1') u.setconfig('hgsubversion', 'layout', layout) test_util.hgclone(u, test_util.fileurl(checkout_path), wc2_path, update=False) if layout == 'single': self.assertEqual(len(self.repo.heads()), 1) self.repo2 = hg.repository(ui.ui(), wc2_path) self.assertEqual(self.repo.heads(), self.repo2.heads()) def buildmethod(case, name, layout): m = lambda self: self._do_case(case, layout) m.__name__ = name m.__doc__ = 'Test stupid produces same as real on %s. (%s)' % (case, layout) return m attrs = {'_do_case': _do_case, } for case in (f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')): if case == 'corrupt.svndump': continue name = 'test_' + case[:-len('.svndump')].replace('-', '_') # Automatic layout branchtag collision exposes a minor defect # here, but since it isn't a regression we suppress the test case. if case != 'branchtagcollision.svndump': attrs[name] = buildmethod(case, name, 'auto') name += '_single' attrs[name] = buildmethod(case, name, 'single') StupidPullTests = type('StupidPullTests', (test_util.TestBase,), attrs) def suite(): all_tests = [unittest.TestLoader().loadTestsFromTestCase(StupidPullTests), ] return unittest.TestSuite(all_tests)