/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.436.2 by Jelmer Vernooij
Add stubs for testsuite, rebase-continue and rebase-abort commands.
1
# Copyright (C) 2006-2007 by Jelmer Vernooij
2
# 
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
0.436.16 by Jelmer Vernooij
Some more work on maptree.
16
"""Tests for the rebase code."""
0.436.2 by Jelmer Vernooij
Add stubs for testsuite, rebase-continue and rebase-abort commands.
17
0.436.7 by Jelmer Vernooij
Add more test, make basic rebase work.
18
from bzrlib.errors import UnknownFormatError, NoSuchFile
0.436.6 by Jelmer Vernooij
Add somewhat more complex plan generation function, rebase implementation.
19
from bzrlib.revision import NULL_REVISION
0.436.5 by Jelmer Vernooij
Import change_revision_parent from bzr-svn.
20
from bzrlib.tests import TestCase, TestCaseWithTransport
21
22
from rebase import (marshall_rebase_plan, unmarshall_rebase_plan, 
0.436.7 by Jelmer Vernooij
Add more test, make basic rebase work.
23
                    replay_snapshot, generate_simple_plan,
24
                    generate_transpose_plan, rebase_plan_exists,
0.436.18 by Jelmer Vernooij
More tests, extend MapTree a bit.
25
                    rebase_todo, REBASE_PLAN_FILENAME, 
26
                    REBASE_CURRENT_REVID_FILENAME, read_rebase_plan, 
27
                    remove_rebase_plan, read_active_rebase_revid, 
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
28
                    write_active_rebase_revid, write_rebase_plan, MapTree,
0.436.34 by Jelmer Vernooij
Some more tests.
29
                    ReplaySnapshotError, ReplayParentsInconsistent)
0.436.5 by Jelmer Vernooij
Import change_revision_parent from bzr-svn.
30
0.436.4 by Jelmer Vernooij
Add some tests.
31
0.436.3 by Jelmer Vernooij
Fill in commands.
32
class RebasePlanReadWriterTests(TestCase):
0.436.4 by Jelmer Vernooij
Add some tests.
33
    def test_simple_marshall_rebase_plan(self):
34
        self.assertEqualDiff(
35
"""# Bazaar rebase plan 1
36
1 bla
37
oldrev newrev newparent1 newparent2
38
""", marshall_rebase_plan((1, "bla"), 
39
                          {"oldrev": ("newrev", ["newparent1", "newparent2"])}))
40
41
    def test_simple_unmarshall_rebase_plan(self):
42
        self.assertEquals(((1, "bla"), 
43
                          {"oldrev": ("newrev", ["newparent1", "newparent2"])}),
44
                         unmarshall_rebase_plan("""# Bazaar rebase plan 1
45
1 bla
46
oldrev newrev newparent1 newparent2
47
"""))
48
49
    def test_unmarshall_rebase_plan_formatunknown(self):
50
        self.assertRaises(UnknownFormatError,
51
                         unmarshall_rebase_plan, """# Bazaar rebase plan x
52
1 bla
53
oldrev newrev newparent1 newparent2
54
""")
0.436.5 by Jelmer Vernooij
Import change_revision_parent from bzr-svn.
55
56
57
class ConversionTests(TestCaseWithTransport):
58
    def test_simple(self):
59
        wt = self.make_branch_and_tree('.')
60
        b = wt.branch
61
        file('hello', 'w').write('hello world')
62
        wt.add('hello')
63
        wt.commit(message='add hello', rev_id="bla")
64
        file('hello', 'w').write('world')
65
        wt.commit(message='change hello', rev_id="bloe")
66
        wt.set_last_revision("bla")
67
        b.set_revision_history(["bla"])
68
        file('hello', 'w').write('world')
69
        wt.commit(message='change hello', rev_id="bla2")
70
        
0.436.7 by Jelmer Vernooij
Add more test, make basic rebase work.
71
        newrev = replay_snapshot(wt.branch.repository, "bla2", "bla4", 
0.436.35 by Jelmer Vernooij
Make revid_renames argument mandatory.
72
                ["bloe"], {"bla": "bloe"})
0.436.5 by Jelmer Vernooij
Import change_revision_parent from bzr-svn.
73
        self.assertEqual("bla4", newrev)
74
        self.assertTrue(wt.branch.repository.has_revision(newrev))
0.436.20 by Jelmer Vernooij
Some more blackbox tests.
75
        self.assertEqual(["bloe"], 
76
                wt.branch.repository.revision_parents(newrev))
77
        self.assertEqual("bla2", 
78
            wt.branch.repository.get_revision(newrev).properties["rebase-of"])
0.436.6 by Jelmer Vernooij
Add somewhat more complex plan generation function, rebase implementation.
79
80
81
class PlanCreatorTests(TestCaseWithTransport):
82
    def test_simple_plan_creator(self):
83
        wt = self.make_branch_and_tree('.')
84
        b = wt.branch
85
        file('hello', 'w').write('hello world')
86
        wt.add('hello')
87
        wt.commit(message='add hello', rev_id="bla")
88
        file('hello', 'w').write('world')
89
        wt.commit(message='change hello', rev_id="bloe")
90
        wt.set_last_revision("bla")
91
        b.set_revision_history(["bla"])
92
        file('hello', 'w').write('world')
93
        wt.commit(message='change hello', rev_id="bla2")
94
95
        self.assertEquals({'bla2': ('newbla2', ["bloe"])}, 
96
                generate_simple_plan(b.repository, b.revision_history(), "bla2", "bloe", 
97
                    lambda y: "new"+y.revision_id))
98
     
99
    def test_simple_plan_creator_extra_history(self):
100
        wt = self.make_branch_and_tree('.')
101
        b = wt.branch
102
        file('hello', 'w').write('hello world')
103
        wt.add('hello')
104
        wt.commit(message='add hello', rev_id="bla")
105
        file('hello', 'w').write('world')
106
        wt.commit(message='change hello', rev_id="bloe")
107
        wt.set_last_revision("bla")
108
        b.set_revision_history(["bla"])
109
        file('hello', 'w').write('world')
110
        wt.commit(message='change hello', rev_id="bla2")
111
        file('hello', 'w').write('universe')
112
        wt.commit(message='change hello again', rev_id="bla3")
113
114
        self.assertEquals({'bla2': ('newbla2', ["bloe"]), 'bla3': ('newbla3', ['newbla2'])}, 
115
                generate_simple_plan(b.repository, b.revision_history(), "bla2", "bloe", 
116
                    lambda y: "new"+y.revision_id))
117
 
118
119
    def test_generate_transpose_plan(self):
120
        wt = self.make_branch_and_tree('.')
121
        b = wt.branch
122
        file('hello', 'w').write('hello world')
123
        wt.add('hello')
124
        wt.commit(message='add hello', rev_id="bla")
125
        file('hello', 'w').write('world')
126
        wt.commit(message='change hello', rev_id="bloe")
127
        wt.set_last_revision("bla")
128
        b.set_revision_history(["bla"])
129
        file('hello', 'w').write('world')
130
        wt.commit(message='change hello', rev_id="bla2")
131
        file('hello', 'w').write('universe')
132
        wt.commit(message='change hello again', rev_id="bla3")
133
        wt.set_last_revision("bla")
134
        b.set_revision_history(["bla"])
135
        file('hello', 'w').write('somebar')
136
        wt.commit(message='change hello yet again', rev_id="blie")
137
        wt.set_last_revision(NULL_REVISION)
138
        b.set_revision_history([])
139
        wt.add('hello')
140
        wt.commit(message='add hello', rev_id="lala")
141
142
        self.assertEquals({
0.436.31 by Jelmer Vernooij
Refactor generate_transpose_plan() to not take a repository object but
143
                'blie': ('newblie', ['lala']), },
144
                generate_transpose_plan(b.repository.get_revision_graph("blie"), 
145
                {"bla": "lala"}, b.repository.revision_parents, lambda y: "new"+y))
0.436.6 by Jelmer Vernooij
Add somewhat more complex plan generation function, rebase implementation.
146
        self.assertEquals({
147
                'bla2': ('newbla2', ['lala']),
148
                'bla3': ('newbla3', ['newbla2']),
149
                'blie': ('newblie', ['lala']),
150
                'bloe': ('newbloe', ['lala'])},
0.436.31 by Jelmer Vernooij
Refactor generate_transpose_plan() to not take a repository object but
151
                generate_transpose_plan(b.repository.get_revision_graph(), 
152
                {"bla": "lala"}, b.repository.revision_parents, lambda y: "new"+y))
0.436.6 by Jelmer Vernooij
Add somewhat more complex plan generation function, rebase implementation.
153
0.436.31 by Jelmer Vernooij
Refactor generate_transpose_plan() to not take a repository object but
154
    def test_generate_transpose_plan_one(self):
155
        self.assertEquals({"bla": ("newbla", ["lala"])},
156
                generate_transpose_plan({"bla": ["bloe"], "bloe": []},
157
                    {"bloe": "lala"}, {}.get, lambda y: "new"+y))
0.436.7 by Jelmer Vernooij
Add more test, make basic rebase work.
158
159
class PlanFileTests(TestCaseWithTransport):
160
   def test_rebase_plan_exists_false(self):
161
        wt = self.make_branch_and_tree('.')
162
        self.assertFalse(rebase_plan_exists(wt))
163
164
   def test_rebase_plan_exists_empty(self):
165
        wt = self.make_branch_and_tree('.')
166
        wt._control_files.put_utf8(REBASE_PLAN_FILENAME, "")
167
        self.assertFalse(rebase_plan_exists(wt))
168
169
   def test_rebase_plan_exists(self):
170
        wt = self.make_branch_and_tree('.')
171
        wt._control_files.put_utf8(REBASE_PLAN_FILENAME, "foo")
172
        self.assertTrue(rebase_plan_exists(wt))
173
174
   def test_remove_rebase_plan(self):
175
        wt = self.make_branch_and_tree('.')
176
        wt._control_files.put_utf8(REBASE_PLAN_FILENAME, "foo")
177
        remove_rebase_plan(wt)
178
        self.assertFalse(rebase_plan_exists(wt))
179
180
   def test_remove_rebase_plan_twice(self):
181
        wt = self.make_branch_and_tree('.')
182
        remove_rebase_plan(wt)
183
        self.assertFalse(rebase_plan_exists(wt))
184
185
   def test_write_rebase_plan(self):
186
        wt = self.make_branch_and_tree('.')
187
        file('hello', 'w').write('hello world')
188
        wt.add('hello')
189
        wt.commit(message='add hello', rev_id="bla")
190
        write_rebase_plan(wt, 
191
                {"oldrev": ("newrev", ["newparent1", "newparent2"])})
192
        self.assertEqualDiff("""# Bazaar rebase plan 1
193
1 bla
194
oldrev newrev newparent1 newparent2
195
""", wt._control_files.get(REBASE_PLAN_FILENAME).read())
196
197
   def test_read_rebase_plan_nonexistant(self):
198
        wt = self.make_branch_and_tree('.')
199
        self.assertRaises(NoSuchFile, read_rebase_plan, wt)
200
201
   def test_read_rebase_plan_empty(self):
202
        wt = self.make_branch_and_tree('.')
203
        wt._control_files.put_utf8(REBASE_PLAN_FILENAME, "")
204
        self.assertRaises(NoSuchFile, read_rebase_plan, wt)
205
        
206
   def test_read_rebase_plan(self):
207
        wt = self.make_branch_and_tree('.')
208
        wt._control_files.put_utf8(REBASE_PLAN_FILENAME, """# Bazaar rebase plan 1
209
1 bla
210
oldrev newrev newparent1 newparent2
211
""")
212
        self.assertEquals(((1, "bla"), {"oldrev": ("newrev", ["newparent1", "newparent2"])}),
213
                read_rebase_plan(wt))
214
0.436.20 by Jelmer Vernooij
Some more blackbox tests.
215
0.436.9 by Jelmer Vernooij
Add rebase-todo command, fix rebase-continue.
216
class CurrentRevidFileTests(TestCaseWithTransport):
217
    def test_read_nonexistant(self):
218
        wt = self.make_branch_and_tree('.')
219
        self.assertIs(None, read_active_rebase_revid(wt))
220
221
    def test_read_null(self):
222
        wt = self.make_branch_and_tree('.')
223
        wt._control_files.put_utf8(REBASE_CURRENT_REVID_FILENAME, NULL_REVISION)
224
        self.assertIs(None, read_active_rebase_revid(wt))
225
226
    def test_read(self):
227
        wt = self.make_branch_and_tree('.')
228
        wt._control_files.put_utf8(REBASE_CURRENT_REVID_FILENAME, "bla")
229
        self.assertEquals("bla", read_active_rebase_revid(wt))
230
231
    def test_write(self):
232
        wt = self.make_branch_and_tree('.')
233
        write_active_rebase_revid(wt, "bloe")
234
        self.assertEquals("bloe", read_active_rebase_revid(wt))
235
236
    def test_write_null(self):
237
        wt = self.make_branch_and_tree('.')
238
        write_active_rebase_revid(wt, None)
239
        self.assertIs(None, read_active_rebase_revid(wt))
0.436.18 by Jelmer Vernooij
More tests, extend MapTree a bit.
240
0.436.20 by Jelmer Vernooij
Some more blackbox tests.
241
0.436.18 by Jelmer Vernooij
More tests, extend MapTree a bit.
242
class RebaseTodoTests(TestCase):
243
    def test_done(self):
244
        class Repository:
245
            def has_revision(self, revid):
246
                return revid == "bloe"
247
        self.assertEquals([], 
248
                list(rebase_todo(Repository(), { "bla": ("bloe", [])})))
249
250
    def test_notstarted(self):
251
        class Repository:
252
            def has_revision(self, revid):
253
                return False
254
        self.assertEquals(["bla"], 
255
                list(rebase_todo(Repository(), { "bla": ("bloe", [])})))
256
257
    def test_halfway(self):
258
        class Repository:
259
            def has_revision(self, revid):
260
                return revid == "bloe"
261
        self.assertEquals(["ha"], 
262
                list(rebase_todo(Repository(), { "bla": ("bloe", []), 
263
                                                 "ha": ("hee", [])})))
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
264
265
class ReplaySnapshotTests(TestCaseWithTransport):
266
    def test_single_revision(self):
267
        wt = self.make_branch_and_tree(".")
268
        self.build_tree(['afile'])
269
        wt.add(["afile"])
270
        wt.commit("bla", rev_id="oldcommit")
0.436.35 by Jelmer Vernooij
Make revid_renames argument mandatory.
271
        replay_snapshot(wt.branch.repository, "oldcommit", "newcommit", [],
272
                        {})
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
273
        oldrev = wt.branch.repository.get_revision("oldcommit")
274
        newrev = wt.branch.repository.get_revision("newcommit")
275
        self.assertEquals([], newrev.parent_ids)
276
        self.assertEquals("newcommit", newrev.revision_id)
277
        self.assertEquals(oldrev.committer, newrev.committer)
278
        self.assertEquals(oldrev.timestamp, newrev.timestamp)
279
        self.assertEquals(oldrev.timezone, newrev.timezone)
280
        inv = wt.branch.repository.get_inventory("newcommit")
281
        self.assertEquals("newcommit", inv[inv.path2id("afile")].revision)
282
283
    def test_parents_different(self):
284
        """replay_snapshot() relies on the fact that the contents of 
285
        the old and new parents is equal (at least concerning tree shape). If 
286
        it turns out it isn't, an exception should be raised."""
287
        wt = self.make_branch_and_tree(".")
288
        wt.commit("bloe", rev_id="base")
289
        self.build_tree(['afile', 'notherfile'])
290
        wt.add(["afile"])
291
        wt.commit("bla", rev_id="oldparent")
292
        wt.add(["notherfile"])
293
        wt.commit("bla", rev_id="oldcommit")
0.436.34 by Jelmer Vernooij
Some more tests.
294
        # this should raise an exception since oldcommit is being rewritten 
295
        # but 'afile' is present in the old parents but not in the new ones.
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
296
        self.assertRaises(
0.436.34 by Jelmer Vernooij
Some more tests.
297
                ReplayParentsInconsistent, replay_snapshot, 
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
298
                wt.branch.repository, "oldcommit", "newcommit", 
0.436.35 by Jelmer Vernooij
Make revid_renames argument mandatory.
299
                ["base"], {"oldparent": "base"})
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
300
0.436.34 by Jelmer Vernooij
Some more tests.
301
    def test_two_revisions(self):
302
        wt = self.make_branch_and_tree("old")
303
        self.build_tree(['old/afile', 'old/notherfile'])
304
        wt.add(["afile"], ["somefileid"])
305
        wt.commit("bla", rev_id="oldparent")
306
        wt.add(["notherfile"])
307
        wt.commit("bla", rev_id="oldcommit")
308
        oldrepos = wt.branch.repository
309
        wt = self.make_branch_and_tree("new")
310
        self.build_tree(['new/afile', 'new/notherfile'])
311
        wt.add(["afile"], ["afileid"])
312
        wt.commit("bla", rev_id="newparent")
313
        wt.branch.repository.fetch(oldrepos)
314
        replay_snapshot(wt.branch.repository, "oldcommit", "newcommit", 
0.436.35 by Jelmer Vernooij
Make revid_renames argument mandatory.
315
                ["newparent"], {"oldparent": "newparent"})
0.436.34 by Jelmer Vernooij
Some more tests.
316
        oldrev = wt.branch.repository.get_revision("oldcommit")
317
        newrev = wt.branch.repository.get_revision("newcommit")
318
        self.assertEquals(["newparent"], newrev.parent_ids)
319
        self.assertEquals("newcommit", newrev.revision_id)
320
        self.assertEquals(oldrev.committer, newrev.committer)
321
        self.assertEquals(oldrev.timestamp, newrev.timestamp)
322
        self.assertEquals(oldrev.timezone, newrev.timezone)
323
        inv = wt.branch.repository.get_inventory("newcommit")
324
        self.assertEquals("afileid", inv.path2id("afile"))
325
        self.assertEquals("newcommit", inv[inv.path2id("notherfile")].revision)
326
327
    def test_two_revisions_no_renames(self):
328
        wt = self.make_branch_and_tree("old")
329
        self.build_tree(['old/afile', 'old/notherfile'])
330
        wt.add(["afile"], ["somefileid"])
331
        wt.commit("bla", rev_id="oldparent")
332
        wt.add(["notherfile"])
333
        wt.commit("bla", rev_id="oldcommit")
334
        oldrepos = wt.branch.repository
335
        wt = self.make_branch_and_tree("new")
336
        self.build_tree(['new/afile', 'new/notherfile'])
337
        wt.add(["afile"], ["afileid"])
338
        wt.commit("bla", rev_id="newparent")
339
        wt.branch.repository.fetch(oldrepos)
340
        self.assertRaises(ReplayParentsInconsistent, 
341
                          replay_snapshot, wt.branch.repository, 
342
                          "oldcommit", "newcommit", 
343
                        ["newparent"], revid_renames={})
344
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
345
    def test_multi_revisions(self):
346
        wt = self.make_branch_and_tree("old")
0.436.35 by Jelmer Vernooij
Make revid_renames argument mandatory.
347
        self.build_tree(['old/afile', 'old/sfile', 'old/notherfile'])
348
        wt.add(['sfile'])
0.436.34 by Jelmer Vernooij
Some more tests.
349
        wt.add(["afile"], ["somefileid"])
350
        wt.commit("bla", rev_id="oldgrandparent")
351
        open("old/afile", "w").write("data")
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
352
        wt.commit("bla", rev_id="oldparent")
353
        wt.add(["notherfile"])
354
        wt.commit("bla", rev_id="oldcommit")
355
        oldrepos = wt.branch.repository
356
        wt = self.make_branch_and_tree("new")
0.436.35 by Jelmer Vernooij
Make revid_renames argument mandatory.
357
        self.build_tree(['new/afile', 'new/sfile', 'new/notherfile'])
358
        wt.add(['sfile'])
0.436.34 by Jelmer Vernooij
Some more tests.
359
        wt.add(["afile"], ["afileid"])
360
        wt.commit("bla", rev_id="newgrandparent")
361
        open("new/afile", "w").write("data")
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
362
        wt.commit("bla", rev_id="newparent")
363
        wt.branch.repository.fetch(oldrepos)
364
        replay_snapshot(wt.branch.repository, "oldcommit", "newcommit", 
0.436.35 by Jelmer Vernooij
Make revid_renames argument mandatory.
365
                ["newparent"], {"oldgrandparent": "newgrandparent", 
366
                                "oldparent": "newparent"})
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
367
        oldrev = wt.branch.repository.get_revision("oldcommit")
368
        newrev = wt.branch.repository.get_revision("newcommit")
0.436.34 by Jelmer Vernooij
Some more tests.
369
        self.assertEquals(["newparent"], newrev.parent_ids)
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
370
        self.assertEquals("newcommit", newrev.revision_id)
371
        self.assertEquals(oldrev.committer, newrev.committer)
372
        self.assertEquals(oldrev.timestamp, newrev.timestamp)
373
        self.assertEquals(oldrev.timezone, newrev.timezone)
374
        inv = wt.branch.repository.get_inventory("newcommit")
0.436.34 by Jelmer Vernooij
Some more tests.
375
        self.assertEquals("afileid", inv.path2id("afile"))
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
376
        self.assertEquals("newcommit", inv[inv.path2id("notherfile")].revision)
0.436.35 by Jelmer Vernooij
Make revid_renames argument mandatory.
377
        self.assertEquals("newgrandparent", inv[inv.path2id("sfile")].revision)
0.436.34 by Jelmer Vernooij
Some more tests.
378
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
379
    def test_maps_ids(self):
380
        wt = self.make_branch_and_tree("old")
381
        wt.commit("base", rev_id="base")
382
        self.build_tree(['old/afile'])
383
        wt.add(["afile"], ids=["originalid"])
384
        wt.commit("bla", rev_id="oldparent")
385
        file("old/afile", "w").write("bloe")
386
        wt.commit("bla", rev_id="oldcommit")
387
        oldrepos = wt.branch.repository
388
        wt = self.make_branch_and_tree("new")
389
        self.build_tree(['new/afile'])
390
        wt.add(["afile"], ids=["newid"])
391
        wt.commit("bla", rev_id="newparent")
392
        wt.branch.repository.fetch(oldrepos)
393
        replay_snapshot(wt.branch.repository, "oldcommit", "newcommit", 
0.436.35 by Jelmer Vernooij
Make revid_renames argument mandatory.
394
                ["newparent"], {"oldparent": "newparent"})
0.436.32 by Jelmer Vernooij
Properly detect invalid snapshot replays.
395
        oldrev = wt.branch.repository.get_revision("oldcommit")
396
        newrev = wt.branch.repository.get_revision("newcommit")
397
        self.assertEquals(["newparent"], newrev.parent_ids)
398
        self.assertEquals("newcommit", newrev.revision_id)
399
        self.assertEquals(oldrev.committer, newrev.committer)
400
        self.assertEquals(oldrev.timestamp, newrev.timestamp)
401
        self.assertEquals(oldrev.timezone, newrev.timezone)
402
        inv = wt.branch.repository.get_inventory("newcommit")
403
        self.assertEquals("newid", inv.path2id("afile"))
404
        self.assertEquals("newcommit", inv[inv.path2id("afile")].revision)
405
0.436.34 by Jelmer Vernooij
Some more tests.
406
class TestReplaySnapshotError(TestCase):
407
    def test_create(self):
408
        ReplaySnapshotError("message")
409
410
411
class TestReplayParentsInconsistent(TestCase):
412
    def test_create(self):
413
        ReplayParentsInconsistent("afileid", "arevid")