Mercurial > hgsubversion
annotate tests/test_fetch_renames.py @ 558:e841e65390d0
push: try a little harder to not send invalid paths to svn
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Sun, 14 Feb 2010 14:06:04 -0600 |
parents | 5c8a48828ae9 |
children | d2ef7220a079 |
rev | line source |
---|---|
67
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
1 import sys |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
2 import unittest |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
3 |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
4 import test_util |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
5 |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
6 |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
7 class TestFetchRenames(test_util.TestBase): |
67
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
8 def _debug_print_copies(self, repo): |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
9 w = sys.stderr.write |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
10 for rev in repo: |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
11 ctx = repo[rev] |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
12 w('%d - %s\n' % (ctx.rev(), ctx.branch())) |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
13 for f in ctx: |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
14 fctx = ctx[f] |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
15 w('%s: %r %r\n' % (f, fctx.data(), fctx.renamed())) |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
16 |
73
9c1b53abefcb
fetch_command: support svn copy detection in stupid mode
Patrick Mezard <pmezard@gmail.com>
parents:
69
diff
changeset
|
17 def _test_rename(self, stupid): |
513
5c8a48828ae9
test renames: remove redundant code
Augie Fackler <durin42@gmail.com>
parents:
496
diff
changeset
|
18 repo = self._load_fixture_and_fetch('renames.svndump', stupid=stupid) |
67
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
19 # self._debug_print_copies(repo) |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
20 |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
21 # Map revnum to mappings of dest name to (source name, dest content) |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
22 copies = { |
68
e0c86ebe05e3
test_fetch_renames: test copy of deleted stuff from the past
Patrick Mezard <pmezard@gmail.com>
parents:
67
diff
changeset
|
23 4: { |
91
7d10165cf3d9
tests: Mock the mercurial.ui.ui class like we really should to capture output.
Augie Fackler <durin42@gmail.com>
parents:
78
diff
changeset
|
24 'a1': ('a', 'a\n'), |
67
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
25 'a2': ('a', 'a\n'), |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
26 'b1': ('b', 'b\nc\n'), |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
27 'da1/daf': ('da/daf', 'c\n'), |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
28 'da1/db/dbf': ('da/db/dbf', 'd\n'), |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
29 'da2/daf': ('da/daf', 'c\n'), |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
30 'da2/db/dbf': ('da/db/dbf', 'd\n'), |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
31 }, |
68
e0c86ebe05e3
test_fetch_renames: test copy of deleted stuff from the past
Patrick Mezard <pmezard@gmail.com>
parents:
67
diff
changeset
|
32 5: { |
67
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
33 'c1': ('c', 'c\nc\n'), |
69
63ece4ea25c9
hg_delta_editor: register copies only if files are unchanged between source and dest
Patrick Mezard <pmezard@gmail.com>
parents:
68
diff
changeset
|
34 }, |
63ece4ea25c9
hg_delta_editor: register copies only if files are unchanged between source and dest
Patrick Mezard <pmezard@gmail.com>
parents:
68
diff
changeset
|
35 9: { |
63ece4ea25c9
hg_delta_editor: register copies only if files are unchanged between source and dest
Patrick Mezard <pmezard@gmail.com>
parents:
68
diff
changeset
|
36 'unchanged2': ('unchanged', 'unchanged\n'), |
63ece4ea25c9
hg_delta_editor: register copies only if files are unchanged between source and dest
Patrick Mezard <pmezard@gmail.com>
parents:
68
diff
changeset
|
37 'unchangeddir2/f': ('unchangeddir/f', 'unchanged2\n'), |
496
5e0dfe59d4c3
copies: fix under-reporting of copies in hg
Augie Fackler <durin42@gmail.com>
parents:
132
diff
changeset
|
38 }, |
5e0dfe59d4c3
copies: fix under-reporting of copies in hg
Augie Fackler <durin42@gmail.com>
parents:
132
diff
changeset
|
39 10: { |
5e0dfe59d4c3
copies: fix under-reporting of copies in hg
Augie Fackler <durin42@gmail.com>
parents:
132
diff
changeset
|
40 'groupdir2/b': ('groupdir/b', 'b\n') |
5e0dfe59d4c3
copies: fix under-reporting of copies in hg
Augie Fackler <durin42@gmail.com>
parents:
132
diff
changeset
|
41 }, |
67
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
42 } |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
43 for rev in repo: |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
44 ctx = repo[rev] |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
45 copymap = copies.get(rev, {}) |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
46 for f in ctx.manifest(): |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
47 cp = ctx[f].renamed() |
69
63ece4ea25c9
hg_delta_editor: register copies only if files are unchanged between source and dest
Patrick Mezard <pmezard@gmail.com>
parents:
68
diff
changeset
|
48 self.assertEqual(bool(cp), bool(copymap.get(f)), |
63ece4ea25c9
hg_delta_editor: register copies only if files are unchanged between source and dest
Patrick Mezard <pmezard@gmail.com>
parents:
68
diff
changeset
|
49 'copy records differ for %s in %d' % (f, rev)) |
67
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
50 if not cp: |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
51 continue |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
52 self.assertEqual(cp[0], copymap[f][0]) |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
53 self.assertEqual(ctx[f].data(), copymap[f][1]) |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
54 |
130
c2a84d436202
test_fetch_rename: test content of files coming from the past
Patrick Mezard <pmezard@gmail.com>
parents:
101
diff
changeset
|
55 self.assertEqual(repo['tip']['changed3'].data(), 'changed\nchanged3\n') |
c2a84d436202
test_fetch_rename: test content of files coming from the past
Patrick Mezard <pmezard@gmail.com>
parents:
101
diff
changeset
|
56 |
73
9c1b53abefcb
fetch_command: support svn copy detection in stupid mode
Patrick Mezard <pmezard@gmail.com>
parents:
69
diff
changeset
|
57 def test_rename(self): |
9c1b53abefcb
fetch_command: support svn copy detection in stupid mode
Patrick Mezard <pmezard@gmail.com>
parents:
69
diff
changeset
|
58 self._test_rename(False) |
9c1b53abefcb
fetch_command: support svn copy detection in stupid mode
Patrick Mezard <pmezard@gmail.com>
parents:
69
diff
changeset
|
59 |
9c1b53abefcb
fetch_command: support svn copy detection in stupid mode
Patrick Mezard <pmezard@gmail.com>
parents:
69
diff
changeset
|
60 def test_rename_stupid(self): |
9c1b53abefcb
fetch_command: support svn copy detection in stupid mode
Patrick Mezard <pmezard@gmail.com>
parents:
69
diff
changeset
|
61 self._test_rename(True) |
9c1b53abefcb
fetch_command: support svn copy detection in stupid mode
Patrick Mezard <pmezard@gmail.com>
parents:
69
diff
changeset
|
62 |
132
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
63 def _test_case(self, stupid): |
513
5c8a48828ae9
test renames: remove redundant code
Augie Fackler <durin42@gmail.com>
parents:
496
diff
changeset
|
64 repo = self._load_fixture_and_fetch('filecase.svndump', stupid=stupid) |
132
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
65 files = { |
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
66 0: ['A', 'a', 'e/a', 'b', 'd/a', 'D/a', 'f/a', 'F'], |
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
67 1: ['A', 'a', 'E/a', 'B', 'd/A', 'D/a', 'f/a', 'F'], |
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
68 } |
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
69 for rev in repo: |
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
70 self.assertEqual(sorted(files[rev]), sorted(repo[rev].manifest())) |
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
71 |
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
72 def test_case(self): |
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
73 self._test_case(False) |
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
74 |
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
75 def test_case_stupid(self): |
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
76 self._test_case(True) |
3a9d6cd18332
test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents:
130
diff
changeset
|
77 |
67
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
78 def suite(): |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
79 all = [unittest.TestLoader().loadTestsFromTestCase(TestFetchRenames), |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
80 ] |
e319c9168910
hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
81 return unittest.TestSuite(all) |