190
198
self.assertInvalid('1.2..1', invalid_as_revision_id=False)
191
199
self.assertInvalid('1.', invalid_as_revision_id=False)
201
def test_append_dwim_revspec(self):
202
original_dwim_revspecs = list(RevisionSpec_dwim._possible_revspecs)
203
def reset_dwim_revspecs():
204
RevisionSpec_dwim._possible_revspecs = original_dwim_revspecs
205
self.addCleanup(reset_dwim_revspecs)
206
RevisionSpec_dwim.append_possible_revspec(RevisionSpec_bork)
207
self.assertAsRevisionId('r1', 'bork')
209
def test_append_lazy_dwim_revspec(self):
210
original_dwim_revspecs = list(RevisionSpec_dwim._possible_revspecs)
211
def reset_dwim_revspecs():
212
RevisionSpec_dwim._possible_revspecs = original_dwim_revspecs
213
self.addCleanup(reset_dwim_revspecs)
214
RevisionSpec_dwim.append_possible_lazy_revspec(
215
"bzrlib.tests.test_revisionspec", "RevisionSpec_bork")
216
self.assertAsRevisionId('r1', 'bork')
194
219
class TestRevisionSpec_revno(TestRevisionSpec):
652
677
def test_as_revision_id(self):
653
678
self.tree.branch.set_submit_branch('tree2')
654
679
self.assertAsRevisionId('alt_r2', 'branch:tree2')
682
class TestRevisionSpec_mainline(TestRevisionSpec):
684
def test_as_revision_id(self):
685
self.assertAsRevisionId('r1', 'mainline:1')
686
self.assertAsRevisionId('r2', 'mainline:1.1.1')
687
self.assertAsRevisionId('r2', 'mainline:revid:alt_r2')
688
spec = RevisionSpec.from_string('mainline:revid:alt_r22')
689
e = self.assertRaises(errors.InvalidRevisionSpec,
690
spec.as_revision_id, self.tree.branch)
691
self.assertContainsRe(str(e),
692
"Requested revision: 'mainline:revid:alt_r22' does not exist in"
695
def test_in_history(self):
696
self.assertInHistoryIs(2, 'r2', 'mainline:revid:alt_r2')
699
class TestRevisionSpec_annotate(TestRevisionSpec):
702
TestRevisionSpec.setUp(self)
703
self.tree = self.make_branch_and_tree('annotate-tree')
704
self.build_tree_contents([('annotate-tree/file1', '1\n')])
705
self.tree.add('file1')
706
self.tree.commit('r1', rev_id='r1')
707
self.build_tree_contents([('annotate-tree/file1', '2\n1\n')])
708
self.tree.commit('r2', rev_id='r2')
709
self.build_tree_contents([('annotate-tree/file1', '2\n1\n3\n')])
711
def test_as_revision_id_r1(self):
712
self.assertAsRevisionId('r1', 'annotate:annotate-tree/file1:2')
714
def test_as_revision_id_r2(self):
715
self.assertAsRevisionId('r2', 'annotate:annotate-tree/file1:1')
717
def test_as_revision_id_uncommitted(self):
718
spec = RevisionSpec.from_string('annotate:annotate-tree/file1:3')
719
e = self.assertRaises(errors.InvalidRevisionSpec,
720
spec.as_revision_id, self.tree.branch)
721
self.assertContainsRe(str(e),
722
r"Requested revision: \'annotate:annotate-tree/file1:3\' does not"
723
" exist in branch: .*\nLine 3 has not been committed.")
725
def test_non_existent_line(self):
726
spec = RevisionSpec.from_string('annotate:annotate-tree/file1:4')
727
e = self.assertRaises(errors.InvalidRevisionSpec,
728
spec.as_revision_id, self.tree.branch)
729
self.assertContainsRe(str(e),
730
r"Requested revision: \'annotate:annotate-tree/file1:4\' does not"
731
" exist in branch: .*\nNo such line: 4")
733
def test_invalid_line(self):
734
spec = RevisionSpec.from_string('annotate:annotate-tree/file1:q')
735
e = self.assertRaises(errors.InvalidRevisionSpec,
736
spec.as_revision_id, self.tree.branch)
737
self.assertContainsRe(str(e),
738
r"Requested revision: \'annotate:annotate-tree/file1:q\' does not"
739
" exist in branch: .*\nNo such line: q")
741
def test_no_such_file(self):
742
spec = RevisionSpec.from_string('annotate:annotate-tree/file2:1')
743
e = self.assertRaises(errors.InvalidRevisionSpec,
744
spec.as_revision_id, self.tree.branch)
745
self.assertContainsRe(str(e),
746
r"Requested revision: \'annotate:annotate-tree/file2:1\' does not"
747
" exist in branch: .*\nFile 'file2' is not versioned")
749
def test_no_such_file_with_colon(self):
750
spec = RevisionSpec.from_string('annotate:annotate-tree/fi:le2:1')
751
e = self.assertRaises(errors.InvalidRevisionSpec,
752
spec.as_revision_id, self.tree.branch)
753
self.assertContainsRe(str(e),
754
r"Requested revision: \'annotate:annotate-tree/fi:le2:1\' does not"
755
" exist in branch: .*\nFile 'fi:le2' is not versioned")