annotate tests/test_fetch_renames.py @ 1512:6d0fe7ce9898

commands: fix command option registering A recent patch introduced svnopts as a way of sharing the svn command options between the old and the new way of registering a command. It turns out 'svnopts' was already used further up in the module to define the flags that should be added to *all* Mercurial commands. So our definition of it here cause us to add all of these options to all Mercurial commands. This was caught because it changes --rev to be '' instead of [], which breaks a number of assumptions in the other commands. Given that none of the subversion tests are command line tests, I'm not sure how to test this. It was caught in other extensions tests. (grafted from 3b1334407783a4379fd515e2ed9acc61e3f175ff) (grafted from 6db63ead5556f2bf72e423ca8c6df08ea3a5b009)
author Durham Goode <durham@fb.com>
date Wed, 24 May 2017 15:07:00 -0700
parents 6088597abd20
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
1 import test_util
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
2
643
d2ef7220a079 tests: import test_util as the first module in all relevant tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 513
diff changeset
3 import sys
d2ef7220a079 tests: import test_util as the first module in all relevant tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 513
diff changeset
4 import unittest
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
5
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
6 class TestFetchRenames(test_util.TestBase):
1064
dc516f85b6c3 test_fetch_renames: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1044
diff changeset
7 stupid_mode_tests = True
dc516f85b6c3 test_fetch_renames: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1044
diff changeset
8
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
9 def _debug_print_copies(self, repo):
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
10 w = sys.stderr.write
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
11 for rev in repo:
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
12 ctx = repo[rev]
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
13 w('%d - %s\n' % (ctx.rev(), ctx.branch()))
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
14 for f in ctx:
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
15 fctx = ctx[f]
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
16 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
17
1064
dc516f85b6c3 test_fetch_renames: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1044
diff changeset
18 def test_rename(self):
944
d6db289f1548 pull: add hgsubversion.filestoresize to control memory consumption
Patrick Mezard <patrick@mezard.eu>
parents: 833
diff changeset
19 config = {
d6db289f1548 pull: add hgsubversion.filestoresize to control memory consumption
Patrick Mezard <patrick@mezard.eu>
parents: 833
diff changeset
20 'hgsubversion.filestoresize': '0',
1235
6b15eeb78c1a editor: fix replay handling for copied + modified symlinks
David Schleimer <dschleimer@fb.com>
parents: 1234
diff changeset
21 # we set this because we expect all of the copies to be
6b15eeb78c1a editor: fix replay handling for copied + modified symlinks
David Schleimer <dschleimer@fb.com>
parents: 1234
diff changeset
22 # handled via replay, and we want to notice if that
6b15eeb78c1a editor: fix replay handling for copied + modified symlinks
David Schleimer <dschleimer@fb.com>
parents: 1234
diff changeset
23 # changes.
6b15eeb78c1a editor: fix replay handling for copied + modified symlinks
David Schleimer <dschleimer@fb.com>
parents: 1234
diff changeset
24 'hgsubversion.failonmissing': 'yes',
944
d6db289f1548 pull: add hgsubversion.filestoresize to control memory consumption
Patrick Mezard <patrick@mezard.eu>
parents: 833
diff changeset
25 }
1064
dc516f85b6c3 test_fetch_renames: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1044
diff changeset
26 repo = self._load_fixture_and_fetch('renames.svndump', config=config)
1234
d3c79072bc6a editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents: 1233
diff changeset
27 self._run_assertions(repo)
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
28
1234
d3c79072bc6a editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents: 1233
diff changeset
29 def test_rename_with_prefix(self):
d3c79072bc6a editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents: 1233
diff changeset
30 config = {
d3c79072bc6a editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents: 1233
diff changeset
31 'hgsubversion.filestoresize': '0',
1235
6b15eeb78c1a editor: fix replay handling for copied + modified symlinks
David Schleimer <dschleimer@fb.com>
parents: 1234
diff changeset
32 'hgsubversion.failonmissing': 'yes',
1234
d3c79072bc6a editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents: 1233
diff changeset
33 }
d3c79072bc6a editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents: 1233
diff changeset
34 repo = self._load_fixture_and_fetch('renames_with_prefix.svndump',
d3c79072bc6a editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents: 1233
diff changeset
35 subdir='prefix',
d3c79072bc6a editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents: 1233
diff changeset
36 config=config)
1485
6088597abd20 test_fetch_renames: avoid hash randomization bug in test
Augie Fackler <raf@durin42.com>
parents: 1484
diff changeset
37 self._run_assertions(repo, prefix=True)
1234
d3c79072bc6a editor: correctly import symlink copy+modify with non-empty prefix
David Schleimer <dschleimer@fb.com>
parents: 1233
diff changeset
38
1485
6088597abd20 test_fetch_renames: avoid hash randomization bug in test
Augie Fackler <raf@durin42.com>
parents: 1484
diff changeset
39 def _run_assertions(self, repo, prefix=False):
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
40 # Map revnum to mappings of dest name to (source name, dest content)
1485
6088597abd20 test_fetch_renames: avoid hash randomization bug in test
Augie Fackler <raf@durin42.com>
parents: 1484
diff changeset
41 if prefix:
6088597abd20 test_fetch_renames: avoid hash randomization bug in test
Augie Fackler <raf@durin42.com>
parents: 1484
diff changeset
42 prefixlen = len('svn:ae30a990-0fd3-493e-b5d7-883bdd606745/prefix')
6088597abd20 test_fetch_renames: avoid hash randomization bug in test
Augie Fackler <raf@durin42.com>
parents: 1484
diff changeset
43 else:
6088597abd20 test_fetch_renames: avoid hash randomization bug in test
Augie Fackler <raf@durin42.com>
parents: 1484
diff changeset
44 prefixlen = len('svn:ae30a990-0fd3-493e-b5d7-883bdd606745')
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
45 copies = {
1485
6088597abd20 test_fetch_renames: avoid hash randomization bug in test
Augie Fackler <raf@durin42.com>
parents: 1484
diff changeset
46 '/trunk@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
47 'a1': ('a', 'a\n'),
1233
0d0132cba155 editor: fix edge case with in memory file-store size limit
David Schleimer <dschleimer@fb.com>
parents: 1064
diff changeset
48 'linka1': ('linka', 'a'),
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
49 'a2': ('a', 'a\n'),
1233
0d0132cba155 editor: fix edge case with in memory file-store size limit
David Schleimer <dschleimer@fb.com>
parents: 1064
diff changeset
50 'linka2': ('linka', 'a'),
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
51 'b1': ('b', 'b\nc\n'),
1233
0d0132cba155 editor: fix edge case with in memory file-store size limit
David Schleimer <dschleimer@fb.com>
parents: 1064
diff changeset
52 'linkb1': ('linkb', 'bc'),
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
53 'da1/daf': ('da/daf', 'c\n'),
1233
0d0132cba155 editor: fix edge case with in memory file-store size limit
David Schleimer <dschleimer@fb.com>
parents: 1064
diff changeset
54 'da1/dalink': ('da/dalink', 'daf'),
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
55 'da1/db/dbf': ('da/db/dbf', 'd\n'),
1233
0d0132cba155 editor: fix edge case with in memory file-store size limit
David Schleimer <dschleimer@fb.com>
parents: 1064
diff changeset
56 'da1/db/dblink': ('da/db/dblink', '../daf'),
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
57 'da2/daf': ('da/daf', 'c\n'),
1233
0d0132cba155 editor: fix edge case with in memory file-store size limit
David Schleimer <dschleimer@fb.com>
parents: 1064
diff changeset
58 'da2/dalink': ('da/dalink', 'daf'),
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
59 'da2/db/dbf': ('da/db/dbf', 'd\n'),
1233
0d0132cba155 editor: fix edge case with in memory file-store size limit
David Schleimer <dschleimer@fb.com>
parents: 1064
diff changeset
60 'da2/db/dblink': ('da/db/dblink', '../daf'),
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
61 },
1485
6088597abd20 test_fetch_renames: avoid hash randomization bug in test
Augie Fackler <raf@durin42.com>
parents: 1484
diff changeset
62 '/branches/branch1@6': {
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
63 'c1': ('c', 'c\nc\n'),
1233
0d0132cba155 editor: fix edge case with in memory file-store size limit
David Schleimer <dschleimer@fb.com>
parents: 1064
diff changeset
64 'linkc1': ('linkc', 'cc'),
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
65 },
1485
6088597abd20 test_fetch_renames: avoid hash randomization bug in test
Augie Fackler <raf@durin42.com>
parents: 1484
diff changeset
66 '/trunk@10': {
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
67 'unchanged2': ('unchanged', 'unchanged\n'),
1233
0d0132cba155 editor: fix edge case with in memory file-store size limit
David Schleimer <dschleimer@fb.com>
parents: 1064
diff changeset
68 'unchangedlink2': ('unchangedlink', 'unchanged'),
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
69 'unchangeddir2/f': ('unchangeddir/f', 'unchanged2\n'),
1233
0d0132cba155 editor: fix edge case with in memory file-store size limit
David Schleimer <dschleimer@fb.com>
parents: 1064
diff changeset
70 'unchangeddir2/link': ('unchangeddir/link', 'f'),
496
5e0dfe59d4c3 copies: fix under-reporting of copies in hg
Augie Fackler <durin42@gmail.com>
parents: 132
diff changeset
71 },
1485
6088597abd20 test_fetch_renames: avoid hash randomization bug in test
Augie Fackler <raf@durin42.com>
parents: 1484
diff changeset
72 '/trunk@11': {
1233
0d0132cba155 editor: fix edge case with in memory file-store size limit
David Schleimer <dschleimer@fb.com>
parents: 1064
diff changeset
73 'groupdir2/b': ('groupdir/b', 'b\n'),
0d0132cba155 editor: fix edge case with in memory file-store size limit
David Schleimer <dschleimer@fb.com>
parents: 1064
diff changeset
74 'groupdir2/linkb': ('groupdir/linkb', 'b'),
496
5e0dfe59d4c3 copies: fix under-reporting of copies in hg
Augie Fackler <durin42@gmail.com>
parents: 132
diff changeset
75 },
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
76 }
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
77 for rev in repo:
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
78 ctx = repo[rev]
1485
6088597abd20 test_fetch_renames: avoid hash randomization bug in test
Augie Fackler <raf@durin42.com>
parents: 1484
diff changeset
79 copymap = copies.get(ctx.extra()['convert_revision'][prefixlen:],
6088597abd20 test_fetch_renames: avoid hash randomization bug in test
Augie Fackler <raf@durin42.com>
parents: 1484
diff changeset
80 {})
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
81 for f in ctx.manifest():
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
82 cp = ctx[f].renamed()
1483
4379baf58f9e test_fetch_renames: refactoring to make debugging easier
Augie Fackler <raf@durin42.com>
parents: 1235
diff changeset
83 want = copymap.get(f)
4379baf58f9e test_fetch_renames: refactoring to make debugging easier
Augie Fackler <raf@durin42.com>
parents: 1235
diff changeset
84 self.assertEqual(
4379baf58f9e test_fetch_renames: refactoring to make debugging easier
Augie Fackler <raf@durin42.com>
parents: 1235
diff changeset
85 bool(cp), bool(want),
4379baf58f9e test_fetch_renames: refactoring to make debugging easier
Augie Fackler <raf@durin42.com>
parents: 1235
diff changeset
86 'copy records differ for %s in %d (want %r, got %r)' % (
4379baf58f9e test_fetch_renames: refactoring to make debugging easier
Augie Fackler <raf@durin42.com>
parents: 1235
diff changeset
87 f, rev, want, cp))
1484
9f1fa3cc6ba5 test_fetch_renames: change how this if statement works
Augie Fackler <raf@durin42.com>
parents: 1483
diff changeset
88 if cp:
9f1fa3cc6ba5 test_fetch_renames: change how this if statement works
Augie Fackler <raf@durin42.com>
parents: 1483
diff changeset
89 self.assertEqual(cp[0], want[0])
9f1fa3cc6ba5 test_fetch_renames: change how this if statement works
Augie Fackler <raf@durin42.com>
parents: 1483
diff changeset
90 self.assertEqual(ctx[f].data(), want[1])
67
e319c9168910 hg_delta_editor: register svn file copies
Patrick Mezard <pmezard@gmail.com>
parents:
diff changeset
91
130
c2a84d436202 test_fetch_rename: test content of files coming from the past
Patrick Mezard <pmezard@gmail.com>
parents: 101
diff changeset
92 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
93
1064
dc516f85b6c3 test_fetch_renames: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1044
diff changeset
94 def test_case(self):
dc516f85b6c3 test_fetch_renames: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1044
diff changeset
95 repo = self._load_fixture_and_fetch('filecase.svndump')
132
3a9d6cd18332 test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents: 130
diff changeset
96 files = {
3a9d6cd18332 test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents: 130
diff changeset
97 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
98 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
99 }
3a9d6cd18332 test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents: 130
diff changeset
100 for rev in repo:
3a9d6cd18332 test_fetch_renames: test file and directory case changes
Patrick Mezard <pmezard@gmail.com>
parents: 130
diff changeset
101 self.assertEqual(sorted(files[rev]), sorted(repo[rev].manifest()))