Mercurial > hgsubversion
view tests/test_fetch_renames.py @ 607:b5f1b629c629
svn_swig_wrapper: improved handling of missing or outdated bindings.
Instead of aborting with a generic message when Subversion bindings
are missing, provide a helpful message. Also, the version check is
refactored to make it easier to bump our requirements in the
future. Finally, error messages are shorten so they fit in 80 columns
along with the standard `abort: ' prefix.
author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
---|---|
date | Fri, 30 Apr 2010 17:35:36 +0200 |
parents | 5c8a48828ae9 |
children | d2ef7220a079 |
line wrap: on
line source
import sys import unittest import test_util class TestFetchRenames(test_util.TestBase): def _debug_print_copies(self, repo): w = sys.stderr.write for rev in repo: ctx = repo[rev] w('%d - %s\n' % (ctx.rev(), ctx.branch())) for f in ctx: fctx = ctx[f] w('%s: %r %r\n' % (f, fctx.data(), fctx.renamed())) def _test_rename(self, stupid): repo = self._load_fixture_and_fetch('renames.svndump', stupid=stupid) # self._debug_print_copies(repo) # Map revnum to mappings of dest name to (source name, dest content) copies = { 4: { 'a1': ('a', 'a\n'), 'a2': ('a', 'a\n'), 'b1': ('b', 'b\nc\n'), 'da1/daf': ('da/daf', 'c\n'), 'da1/db/dbf': ('da/db/dbf', 'd\n'), 'da2/daf': ('da/daf', 'c\n'), 'da2/db/dbf': ('da/db/dbf', 'd\n'), }, 5: { 'c1': ('c', 'c\nc\n'), }, 9: { 'unchanged2': ('unchanged', 'unchanged\n'), 'unchangeddir2/f': ('unchangeddir/f', 'unchanged2\n'), }, 10: { 'groupdir2/b': ('groupdir/b', 'b\n') }, } for rev in repo: ctx = repo[rev] copymap = copies.get(rev, {}) for f in ctx.manifest(): cp = ctx[f].renamed() self.assertEqual(bool(cp), bool(copymap.get(f)), 'copy records differ for %s in %d' % (f, rev)) if not cp: continue self.assertEqual(cp[0], copymap[f][0]) self.assertEqual(ctx[f].data(), copymap[f][1]) self.assertEqual(repo['tip']['changed3'].data(), 'changed\nchanged3\n') def test_rename(self): self._test_rename(False) def test_rename_stupid(self): self._test_rename(True) def _test_case(self, stupid): repo = self._load_fixture_and_fetch('filecase.svndump', stupid=stupid) files = { 0: ['A', 'a', 'e/a', 'b', 'd/a', 'D/a', 'f/a', 'F'], 1: ['A', 'a', 'E/a', 'B', 'd/A', 'D/a', 'f/a', 'F'], } for rev in repo: self.assertEqual(sorted(files[rev]), sorted(repo[rev].manifest())) def test_case(self): self._test_case(False) def test_case_stupid(self): self._test_case(True) def suite(): all = [unittest.TestLoader().loadTestsFromTestCase(TestFetchRenames), ] return unittest.TestSuite(all)