Mercurial > hgsubversion
view tests/comprehensive/test_custom_layout.py @ 1414:99bc6003ac56
maps: add the "exists" method to RevMap
This is a part of the bigger plan to get rid of reading or writing rev_map
directly without going through the RevMap class.
Before this patch, there is no easy way to know if the RevMap file exists
or not, so the revset functions "fromsvn" and "svnrev" choose to read the
rev_map file directly, and throw an exception if the file does not exist.
This patch adds the "exists" method that will be used in svnmeta next patch,
so these revset functions can test if the file exists without reading the
rev_map file directly.
author | Jun Wu <quark@fb.com> |
---|---|
date | Fri, 13 May 2016 23:19:15 +0100 |
parents | 89997a5fc181 |
children |
line wrap: on
line source
import os 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 from hgsubversion import svnwrap def _do_case(self, name, stupid): subdir = test_util.subdir.get(name, '') config = { 'hgsubversion.stupid': stupid and '1' or '0', } repo, repo_path = self.load_and_fetch(name, subdir=subdir, layout='auto', 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 + '_custom' checkout_path = repo_path if subdir: checkout_path += '/' + subdir u = test_util.testui(stupid=stupid, layout='custom') for branch, path in test_util.custom.get(name, {}).iteritems(): u.setconfig('hgsubversionbranch', branch, path) test_util.hgclone(u, test_util.fileurl(checkout_path), wc2_path, update=False) self.repo2 = hg.repository(test_util.testui(), wc2_path) self.assertEqual(self.repo.heads(), self.repo2.heads()) def buildmethod(case, name, stupid): m = lambda self: self._do_case(case, stupid) m.__name__ = name replay = stupid and 'stupid' or 'regular' m.__doc__ = 'Test custom produces same as standard on %s. (%s)' % (case, replay) return m attrs = {'_do_case': _do_case, } for case in test_util.custom: name = 'test_' + case[:-len('.svndump')].replace('-', '_') attrs[name] = buildmethod(case, name, stupid=False) if svnwrap.subversion_version < (1, 9, 0): name += '_stupid' attrs[name] = buildmethod(case, name, stupid=True) CustomPullTests = type('CustomPullTests', (test_util.TestBase,), attrs)