Mercurial > hgsubversion
view tests/test_startrev.py @ 713:69c0e7c4faf9
clone: call the wrapped function (fixes #181)
This is a regression that was brought to my attention in #mercurial:
hgsubversion breaks the --update flag. The cause is that we call
hg.clone() directly rather than the original wrapped function. A
comment in 'wrapper.py' noted that the call to hg.clone() should be
kept in sync with 'mercurial/commands.py'. That didn't happen.
The original reason for calling hg.clone() directly was that we needed
its return values. Another wrapper is added (and cleared) within
clone() to get them anyway.
author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
---|---|
date | Wed, 29 Sep 2010 18:04:26 +0200 |
parents | d101b39f6c51 |
children | e9af7eba88db |
line wrap: on
line source
import test_util import os import unittest def _do_case(self, name, subdir, stupid): wc_base = self.wc_path self.wc_path = wc_base + '_full' headclone = self._load_fixture_and_fetch(name, subdir=subdir, stupid=stupid, layout='single', startrev='HEAD') self.wc_path = wc_base + '_head' fullclone = self._load_fixture_and_fetch(name, subdir=subdir, stupid=stupid, layout='single') fulltip = fullclone['tip'] headtip = headclone['tip'] # viewing diff's of lists of files is easier on the eyes self.assertMultiLineEqual('\n'.join(fulltip), '\n'.join(headtip)) for f in fulltip: self.assertMultiLineEqual(fulltip[f].data(), headtip[f].data()) self.assertNotEqual(len(fullclone), 0, "full clone shouldn't be empty") self.assertEqual(len(headclone), 1, "shallow clone should have just one revision, not %d" % len(headclone)) def buildmethod(case, name, subdir, stupid): m = lambda self: self._do_case(case, subdir.strip('/'), stupid) m.__name__ = name m.__doc__ = ('Test clone with startrev on %s%s with %s replay.' % (case, subdir, (stupid and 'stupid') or 'real')) return m # these fixtures contain no files at HEAD and would result in empty clones nofiles = set([ 'binaryfiles.svndump', 'emptyrepo.svndump', ]) # these fixtures contain no files in trunk at HEAD and would result in an empty # shallow clone if cloning trunk, so we use another subdirectory subdirmap = { 'commit-to-tag.svndump': '/branches/magic', 'pushexternals.svndump': '', 'tag_name_same_as_branch.svndump': '/branches/magic', } attrs = {'_do_case': _do_case, } for case in [f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')]: if case in nofiles: continue subdir = test_util.subdir.get(case, '') + subdirmap.get(case, '/trunk') bname = 'test_' + case[:-len('.svndump')] attrs[bname] = buildmethod(case, bname, subdir, False) name = bname + '_stupid' attrs[name] = buildmethod(case, name, subdir, True) StartRevTests = type('StartRevTests', (test_util.TestBase, ), attrs) def suite(): all = [unittest.TestLoader().loadTestsFromTestCase(StartRevTests), ] return unittest.TestSuite(all)