/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_revisionspec.py

  • Committer: John Arbash Meinel
  • Date: 2008-07-09 21:42:24 UTC
  • mto: This revision was merged to the branch mainline in revision 3543.
  • Revision ID: john@arbash-meinel.com-20080709214224-r75k87r6a01pfc3h
Restore a real weave merge to 'bzr merge --weave'.

To do so efficiently, we only add the simple LCAs to the final weave
object, unless we run into complexities with the merge graph.
This gives the same effective result as adding all the texts,
with the advantage of not having to extract all of them.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2004, 2005, 2006, 2007 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
import datetime
18
18
import os
23
23
    bzrdir,
24
24
    errors,
25
25
    repository,
26
 
    revision as _mod_revision,
27
26
    )
28
27
from bzrlib.tests import TestCase, TestCaseWithTransport
29
28
from bzrlib.revisionspec import (
101
100
        self.assertEqual(revision_id,
102
101
                         spec.as_revision_id(self.tree.branch))
103
102
 
104
 
    def get_as_tree(self, revision_spec, tree=None):
105
 
        if tree is None:
106
 
            tree = self.tree
107
 
        spec = RevisionSpec.from_string(revision_spec)
108
 
        return spec.as_tree(tree.branch)
109
 
 
110
103
 
111
104
class RevisionSpecMatchOnTrap(RevisionSpec):
112
105
 
146
139
    def test_object(self):
147
140
        self.assertRaises(TypeError, RevisionSpec.from_string, object())
148
141
 
149
 
 
150
 
class TestRevisionSpec_dwim(TestRevisionSpec):
151
 
 
152
 
    # Don't need to test revno's explicitly since TRS_revno already
153
 
    # covers that well for us
154
 
    def test_dwim_spec_revno(self):
155
 
        self.assertInHistoryIs(2, 'r2', '2')
156
 
        self.assertAsRevisionId('alt_r2', '1.1.1')
157
 
 
158
 
    def test_dwim_spec_revid(self):
159
 
        self.assertInHistoryIs(2, 'r2', 'r2')
160
 
 
161
 
    def test_dwim_spec_tag(self):
162
 
        self.tree.branch.tags.set_tag('footag', 'r1')
163
 
        self.assertAsRevisionId('r1', 'footag')
164
 
        self.tree.branch.tags.delete_tag('footag')
165
 
        self.assertRaises(errors.InvalidRevisionSpec,
166
 
                          self.get_in_history, 'footag')
167
 
 
168
 
    def test_dwim_spec_tag_that_looks_like_revno(self):
169
 
        # Test that we slip past revno with things that look like revnos,
170
 
        # but aren't.  Tags are convenient for testing this since we can
171
 
        # make them look however we want.
172
 
        self.tree.branch.tags.set_tag('3', 'r2')
173
 
        self.assertAsRevisionId('r2', '3')
174
 
        self.build_tree(['tree/b'])
175
 
        self.tree.add(['b'])
176
 
        self.tree.commit('b', rev_id='r3')
177
 
        self.assertAsRevisionId('r3', '3')
178
 
 
179
 
    def test_dwim_spec_date(self):
180
 
        self.assertAsRevisionId('r1', 'today')
181
 
 
182
 
    def test_dwim_spec_branch(self):
183
 
        self.assertInHistoryIs(None, 'alt_r2', 'tree2')
184
 
 
185
 
    def test_dwim_spec_nonexistent(self):
186
 
        self.assertInvalid('somethingrandom', invalid_as_revision_id=False)
187
 
        self.assertInvalid('-1.1', invalid_as_revision_id=False)
188
 
        self.assertInvalid('.1', invalid_as_revision_id=False)
189
 
        self.assertInvalid('1..1', invalid_as_revision_id=False)
190
 
        self.assertInvalid('1.2..1', invalid_as_revision_id=False)
191
 
        self.assertInvalid('1.', invalid_as_revision_id=False)
 
142
    def test_unregistered_spec(self):
 
143
        self.assertRaises(errors.NoSuchRevisionSpec,
 
144
                          RevisionSpec.from_string, 'foo')
 
145
        self.assertRaises(errors.NoSuchRevisionSpec,
 
146
                          RevisionSpec.from_string, '123a')
 
147
 
 
148
 
 
149
 
 
150
class TestRevnoFromString(TestCase):
 
151
 
 
152
    def test_from_string_dotted_decimal(self):
 
153
        self.assertRaises(errors.NoSuchRevisionSpec, RevisionSpec.from_string, '-1.1')
 
154
        self.assertRaises(errors.NoSuchRevisionSpec, RevisionSpec.from_string, '.1')
 
155
        self.assertRaises(errors.NoSuchRevisionSpec, RevisionSpec.from_string, '1..1')
 
156
        self.assertRaises(errors.NoSuchRevisionSpec, RevisionSpec.from_string, '1.2..1')
 
157
        self.assertRaises(errors.NoSuchRevisionSpec, RevisionSpec.from_string, '1.')
 
158
        self.assertIsInstance(RevisionSpec.from_string('1.1'), RevisionSpec_revno)
 
159
        self.assertIsInstance(RevisionSpec.from_string('1.1.3'), RevisionSpec_revno)
192
160
 
193
161
 
194
162
class TestRevisionSpec_revno(TestRevisionSpec):
201
169
 
202
170
    def test_dotted_decimal(self):
203
171
        self.assertInHistoryIs(None, 'alt_r2', '1.1.1')
204
 
        self.assertInvalid('1.1.123')
205
172
 
206
173
    def test_negative_int(self):
207
174
        self.assertInHistoryIs(2, 'r2', '-1')
301
268
        """Old revno:N:path tests"""
302
269
        wta = self.make_branch_and_tree('a')
303
270
        ba = wta.branch
304
 
 
 
271
        
305
272
        wta.commit('Commit one', rev_id='a@r-0-1')
306
273
        wta.commit('Commit two', rev_id='a@r-0-2')
307
274
        wta.commit('Commit three', rev_id='a@r-0-3')
333
300
        self.assertAsRevisionId('r2', '-1')
334
301
        self.assertAsRevisionId('alt_r2', '1.1.1')
335
302
 
336
 
    def test_as_tree(self):
337
 
        tree = self.get_as_tree('0')
338
 
        self.assertEquals(_mod_revision.NULL_REVISION, tree.get_revision_id())
339
 
        tree = self.get_as_tree('1')
340
 
        self.assertEquals('r1', tree.get_revision_id())
341
 
        tree = self.get_as_tree('2')
342
 
        self.assertEquals('r2', tree.get_revision_id())
343
 
        tree = self.get_as_tree('-2')
344
 
        self.assertEquals('r1', tree.get_revision_id())
345
 
        tree = self.get_as_tree('-1')
346
 
        self.assertEquals('r2', tree.get_revision_id())
347
 
        tree = self.get_as_tree('1.1.1')
348
 
        self.assertEquals('alt_r2', tree.get_revision_id())
349
 
 
350
303
 
351
304
class TestRevisionSpec_revid(TestRevisionSpec):
352
 
 
 
305
    
353
306
    def test_in_history(self):
354
307
        # We should be able to access revisions that are directly
355
308
        # in the history.
356
309
        self.assertInHistoryIs(1, 'r1', 'revid:r1')
357
310
        self.assertInHistoryIs(2, 'r2', 'revid:r2')
358
 
 
 
311
        
359
312
    def test_missing(self):
360
313
        self.assertInvalid('revid:r3', invalid_as_revision_id=False)
361
314
 
462
415
 
463
416
 
464
417
class TestRevisionSpec_tag(TestRevisionSpec):
465
 
 
 
418
    
466
419
    def make_branch_and_tree(self, relpath):
467
420
        # override format as the default one may not support tags
468
421
        return TestRevisionSpec.make_branch_and_tree(
534
487
 
535
488
 
536
489
class TestRevisionSpec_ancestor(TestRevisionSpec):
537
 
 
 
490
    
538
491
    def test_non_exact_branch(self):
539
492
        # It seems better to require an exact path to the branch
540
493
        # Branch.open() rather than using Branch.open_containing()
570
523
        self.assertRaises(errors.NoCommits,
571
524
                          spec_in_history, 'ancestor:new_tree',
572
525
                                           self.tree.branch)
573
 
 
 
526
                        
574
527
        self.assertRaises(errors.NoCommits,
575
528
                          spec_in_history, 'ancestor:tree',
576
529
                                           new_tree.branch)
578
531
    def test_as_revision_id(self):
579
532
        self.assertAsRevisionId('alt_r2', 'ancestor:tree2')
580
533
 
581
 
    def test_default(self):
582
 
        # We don't have a parent to default to
583
 
        self.assertRaises(errors.NotBranchError, self.get_in_history,
584
 
                          'ancestor:')
585
 
 
586
 
        # Create a branch with a parent to default to
587
 
        tree3 = self.tree.bzrdir.sprout('tree3').open_workingtree()
588
 
        tree3.commit('foo', rev_id='r3')
589
 
        self.tree = tree3
590
 
        self.assertInHistoryIs(2, 'r2', 'ancestor:')
591
 
 
592
534
 
593
535
class TestRevisionSpec_branch(TestRevisionSpec):
594
 
 
 
536
    
595
537
    def test_non_exact_branch(self):
596
538
        # It seems better to require an exact path to the branch
597
539
        # Branch.open() rather than using Branch.open_containing()
622
564
        new_tree = self.make_branch_and_tree('new_tree')
623
565
        self.assertRaises(errors.NoCommits,
624
566
                          self.get_in_history, 'branch:new_tree')
625
 
        self.assertRaises(errors.NoCommits,
626
 
                          self.get_as_tree, 'branch:new_tree')
627
567
 
628
568
    def test_as_revision_id(self):
629
569
        self.assertAsRevisionId('alt_r2', 'branch:tree2')
630
570
 
631
 
    def test_as_tree(self):
632
 
        tree = self.get_as_tree('branch:tree', self.tree2)
633
 
        self.assertEquals('r2', tree.get_revision_id())
634
 
        self.assertFalse(self.tree2.branch.repository.has_revision('r2'))
635
 
 
636
571
 
637
572
class TestRevisionSpec_submit(TestRevisionSpec):
638
573