Mercurial > hgsubversion
annotate tests/test_push_renames.py @ 461:db3a53a2cd76
wrappers: make push aborts if uncommitted changes
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sat, 18 Jul 2009 20:44:33 -0500 |
parents | 067914ecb4eb |
children | c421e6bf0d95 |
rev | line source |
---|---|
70
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
1 import sys |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
2 import unittest |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
3 |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
4 import test_util |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
5 |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
6 class TestPushRenames(test_util.TestBase): |
70
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
7 def setUp(self): |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
78
diff
changeset
|
8 test_util.TestBase.setUp(self) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
70
diff
changeset
|
9 test_util.load_fixture_and_fetch('pushrenames.svndump', |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
70
diff
changeset
|
10 self.repo_path, |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
70
diff
changeset
|
11 self.wc_path, |
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
70
diff
changeset
|
12 True) |
70
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
13 |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
14 def _debug_print_copies(self, ctx): |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
15 w = sys.stderr.write |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
16 for f in ctx.files(): |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
17 if f not in ctx: |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
18 w('R %s\n' % f) |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
19 else: |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
20 w('U %s %r\n' % (f, ctx[f].data())) |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
21 if ctx[f].renamed(): |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
22 w('%s copied from %s\n' % (f, ctx[f].renamed()[0])) |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
23 |
84
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
82
diff
changeset
|
24 def test_push_renames(self): |
70
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
25 repo = self.repo |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
26 |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
27 changes = [ |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
28 # Regular copy of a single file |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
29 ('a', 'a2', None), |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
30 # Copy and update of target |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
31 ('a', 'a3', 'aa\n'), |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
32 # Regular move of a single file |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
33 ('b', 'b2', None), |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
34 ('b', None, None), |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
35 # Regular move and update of target |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
36 ('c', 'c2', 'c\nc\n'), |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
37 ('c', None, None), |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
38 # Copy and update of source and targets |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
39 ('d', 'd2', 'd\nd2\n'), |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
40 ('d', 'd', 'd\nd\n'), |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
41 # Double copy and removal (aka copy and move) |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
42 ('e', 'e2', 'e\ne2\n'), |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
43 ('e', 'e3', 'e\ne3\n'), |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
44 ('e', None, None), |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
45 ] |
84
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
82
diff
changeset
|
46 self.commitchanges(changes) |
01e747937d35
test_util: add commitchanges() to TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
82
diff
changeset
|
47 self.pushrevisions() |
70
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
48 tip = self.repo['tip'] |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
49 # self._debug_print_copies(tip) |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
50 self.assertchanges(changes, tip) |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
51 |
323
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
52 def test_push_rename_tree(self): |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
53 repo = self.repo |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
54 |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
55 changes = [ |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
56 ('geek/alpha', 'geek/alpha', 'content',), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
57 ('geek/beta', 'geek/beta', 'content',), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
58 ('geek/delta', 'geek/delta', 'content',), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
59 ('geek/gamma', 'geek/gamma', 'content',), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
60 ('geek/later/pi', 'geek/later/pi', 'content geek/later/pi',), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
61 ('geek/later/rho', 'geek/later/rho', 'content geek/later/rho', ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
62 ('geek/other/blah', 'geek/other/blah', 'content geek/other/blah', ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
63 ('geek/other/another/layer', 'geek/other/another/layer', 'content deep file', ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
64 ] |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
65 |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
66 self.commitchanges(changes) |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
67 self.pushrevisions() |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
68 self.assertchanges(changes, self.repo['tip']) |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
69 |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
70 changes = [ |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
71 # rename (copy + remove) all of geek to greek |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
72 ('geek/alpha', 'greek/alpha', None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
73 ('geek/beta', 'greek/beta', None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
74 ('geek/delta', 'greek/delta', None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
75 ('geek/gamma', 'greek/gamma', None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
76 ('geek/later/pi', 'greek/later/pi', None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
77 ('geek/later/rho', 'greek/later/rho', None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
78 ('geek/other/blah', 'greek/other/blah', None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
79 ('geek/other/another/layer', 'greek/other/another/layer', None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
80 |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
81 ('geek/alpha', None, None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
82 ('geek/beta', None, None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
83 ('geek/delta', None, None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
84 ('geek/gamma', None, None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
85 ('geek/later/pi', None, None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
86 ('geek/later/rho', None, None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
87 ('geek/other/blah', None, None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
88 ('geek/other/another/layer', None, None, ), |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
89 ] |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
90 self.commitchanges(changes) |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
91 self.pushrevisions() |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
92 # print '\n'.join(sorted(self.svnls('trunk'))) |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
93 assert reduce(lambda x, y: x and y, |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
94 ('geek' not in f for f in self.svnls('trunk'))),( |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
95 'This failure means rename of an entire tree is broken.' |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
96 ' There is a print on the preceding line commented out ' |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
97 'that should help you.') |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
98 |
067914ecb4eb
push: Fix a bug in deletion of an entire tree.
Augie Fackler <durin42@gmail.com>
parents:
96
diff
changeset
|
99 |
70
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
100 def suite(): |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
101 all = [unittest.TestLoader().loadTestsFromTestCase(TestPushRenames), |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
102 ] |
49b7cbe4c8e3
push_cmd: handle copies at file level
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
103 return unittest.TestSuite(all) |