mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
f47acc0834
Summary: Here we make imports in `hgsubversion` tests work again. This consists of two main parts: 1. tests were importing each other as python modules. Now that they have `-` in their names, it is impossible. However, we can utilize some tricks to work around this (`imp.load_source`) 2. tests where doing some weird location assumptions, we clean that up Depends on D6719890 Test Plan: - `./run-tests -l test-hgsubversion-*`, see non-import-exception failures Reviewers: #sourcecontrol Differential Revision: https://phabricator.intern.facebook.com/D6719894
60 lines
2.1 KiB
Python
60 lines
2.1 KiB
Python
# no-check-code -- see T24862348
|
|
|
|
import os
|
|
import sys
|
|
|
|
from mercurial import hg
|
|
import test_hgsubversion_util
|
|
from hgext.hgsubversion import svnwrap
|
|
|
|
|
|
def _do_case(self, name, stupid):
|
|
subdir = test_hgsubversion_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_hgsubversion_util.repolen(self.repo) > 0, \
|
|
'Repo had no changes, maybe you need to add a subdir entry in test_hgsubversion_util?'
|
|
wc2_path = self.wc_path + '_custom'
|
|
checkout_path = repo_path
|
|
if subdir:
|
|
checkout_path += '/' + subdir
|
|
u = test_hgsubversion_util.testui(stupid=stupid, layout='custom')
|
|
for branch, path in test_hgsubversion_util.custom.get(name, {}).iteritems():
|
|
u.setconfig('hgsubversionbranch', branch, path)
|
|
test_hgsubversion_util.hgclone(u,
|
|
test_hgsubversion_util.fileurl(checkout_path),
|
|
wc2_path,
|
|
update=False)
|
|
self.repo2 = hg.repository(test_hgsubversion_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_hgsubversion_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_hgsubversion_util.TestBase,), attrs)
|
|
|
|
if __name__ == '__main__':
|
|
import silenttestrunner
|
|
silenttestrunner.main(__name__)
|
|
|