Mercurial > hgsubversion
view tests/comprehensive/test_stupid_pull.py @ 430:2851b81c65ce
maps: make sure AuthorMaps don't overwrite themselves, fix overriding
Author maps for the Python repo got truncated because of the author map stupidly
writing upon itself. This patch implements a better and faster scenario, where
entries will only be written to the saved author map if they're not coming from that
file. They're also now streamed into the file directly, instead of having to re-open
the file on every entry, and formatting is preserved.
author | Dirkjan Ochtman <dirkjan@ochtman.nl> |
---|---|
date | Mon, 15 Jun 2009 16:09:27 +0200 |
parents | 987bd7444f60 |
children | 24a8471069c0 |
line wrap: on
line source
import os import pickle import unittest from mercurial import hg from mercurial import ui from tests import test_util from hgsubversion import wrappers def _do_case(self, name): subdir = test_util.subdir.get(name, '') self._load_fixture_and_fetch(name, subdir=subdir, stupid=False) 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 = self.repo_path if subdir: checkout_path += '/' + subdir u.setconfig('hgsubversion', 'stupid', '1') hg.clone(u, test_util.fileurl(checkout_path), wc2_path, update=False) self.repo2 = hg.repository(ui.ui(), wc2_path) self.assertEqual(self.repo.branchtags(), self.repo2.branchtags()) def buildmethod(case, name): m = lambda self: self._do_case(case) m.__name__ = name m.__doc__ = 'Test stupid produces same as real on %s.' % case return m attrs = {'_do_case': _do_case, } for case in (f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')): name = 'test_' + case[:-len('.svndump')] attrs[name] = buildmethod(case, name) StupidPullTests = type('StupidPullTests', (test_util.TestBase, ), attrs) def suite(): all = [unittest.TestLoader().loadTestsFromTestCase(StupidPullTests), ] return unittest.TestSuite(all)