Mercurial > hgsubversion
view tests/comprehensive/test_stupid_pull.py @ 1175:d6296f901fc7 stable
push: update push logic to match mercurial upstream
Commit e10000369b47 in upstream Mercurial changed the checkpush function
signature. So we need to update hgsubversion accordingly.
Ran the tests against the tip of the hg repo, against a version of hg from
January before the exchange module, and against a version of hg after
pushoperations was added but before checkpush used it, and the tests passed in
all cases.
author | Durham Goode <durham@fb.com> |
---|---|
date | Wed, 09 Apr 2014 16:17:13 -0700 |
parents | cd0d14e25757 |
children | ff4e102932ed |
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, '') config = {} u = ui.ui() for branch, path in test_util.custom.get(name, {}).iteritems(): config['hgsubversionbranch.%s' % branch] = path u.setconfig('hgsubversionbranch', branch, path) repo, repo_path = self.load_and_fetch(name, subdir=subdir, layout=layout, config=config) assert test_util.repolen(self.repo) > 0, \ 'Repo had no changes, maybe you need to add a subdir entry in test_util?' wc2_path = self.wc_path + '_stupid' 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') attrs[name + '_single'] = buildmethod(case, name + '_single', 'single') if case in test_util.custom: attrs[name + '_custom'] = buildmethod(case, name + '_custom', 'custom') StupidPullTests = type('StupidPullTests', (test_util.TestBase,), attrs)