/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
1728.2.1 by Martin Pool
Remove duplicated RevisionSpec_revs (guillaume)
1
# Copyright (C) 2004, 2005, 2006 by Canonical Ltd
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
2
#
897 by Martin Pool
- merge john's revision-naming code
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
7
#
897 by Martin Pool
- merge john's revision-naming code
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
12
#
897 by Martin Pool
- merge john's revision-naming code
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
16
974.1.52 by aaron.bentley at utoronto
Merged mpool's latest changes (~0.0.7)
17
import os
1185.1.39 by Robert Collins
Robey Pointers before: namespace to clear up usage of dates in revision parameters
18
import time
1432 by Robert Collins
branch: namespace
19
1948.4.1 by John Arbash Meinel
Update number parsers to raise InvalidRevisionSpec. Update revno: itself so it supports negative numbers
20
from bzrlib import (
21
    errors,
22
    )
1534.1.16 by Robert Collins
Merge from jam-integration.
23
from bzrlib.builtins import merge
1432 by Robert Collins
branch: namespace
24
from bzrlib.branch import Branch
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
25
from bzrlib.tests import TestCaseWithTransport
974.1.81 by Aaron Bentley
Added ancestor revision namepsace
26
from bzrlib.errors import NoCommonAncestor, NoCommits
1432 by Robert Collins
branch: namespace
27
from bzrlib.revisionspec import RevisionSpec
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
28
29
30
class TestRevisionNamespaces(TestCaseWithTransport):
1185.1.28 by Robert Collins
revert out the revision spec from revision spec change
31
1732.3.3 by Matthieu Moy
Testcases for revno:N:path
32
    def test_revno_n_path(self):
33
        """Test revision specifiers.
34
35
        These identify revisions by date, etc."""
36
        wta = self.make_branch_and_tree('a')
37
        ba = wta.branch
38
        
39
        wta.commit('Commit one', rev_id='a@r-0-1')
40
        wta.commit('Commit two', rev_id='a@r-0-2')
41
        wta.commit('Commit three', rev_id='a@r-0-3')
42
43
        wtb = self.make_branch_and_tree('b')
44
        bb = wtb.branch
45
46
        wtb.commit('Commit one', rev_id='b@r-0-1')
47
        wtb.commit('Commit two', rev_id='b@r-0-2')
48
        wtb.commit('Commit three', rev_id='b@r-0-3')
49
50
        self.assertEquals(RevisionSpec('revno:1:a/').in_history(ba),
51
                          (1, 'a@r-0-1'))
52
        # The argument of in_history should be ignored since it is
53
        # redundant with the path in the spec.
54
        self.assertEquals(RevisionSpec('revno:1:a/').in_history(None),
55
                          (1, 'a@r-0-1'))
56
        self.assertEquals(RevisionSpec('revno:1:a/').in_history(bb),
57
                          (1, 'a@r-0-1'))
58
        self.assertEquals(RevisionSpec('revno:2:b/').in_history(None),
59
                          (2, 'b@r-0-2'))
60
61
1102 by Martin Pool
- merge test refactoring from robertc
62
    def test_revision_namespaces(self):
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
63
        """Test revision specifiers.
64
65
        These identify revisions by date, etc."""
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
66
        wt = self.make_branch_and_tree('.')
67
        b = wt.branch
68
69
        wt.commit('Commit one', rev_id='a@r-0-1', timestamp=time.time() - 60*60*24)
70
        wt.commit('Commit two', rev_id='a@r-0-2')
71
        wt.commit('Commit three', rev_id='a@r-0-3')
897 by Martin Pool
- merge john's revision-naming code
72
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
73
        self.assertEquals(RevisionSpec(None).in_history(b), (0, None))
74
        self.assertEquals(RevisionSpec(1).in_history(b), (1, 'a@r-0-1'))
75
        self.assertEquals(RevisionSpec('revno:1').in_history(b),
76
                          (1, 'a@r-0-1'))
77
        self.assertEquals(RevisionSpec('revid:a@r-0-1').in_history(b),
78
                          (1, 'a@r-0-1'))
1948.4.2 by John Arbash Meinel
Update _match_on_and_check to raise the right error
79
        self.assertRaises(errors.InvalidRevisionSpec,
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
80
                          RevisionSpec('revid:a@r-0-0').in_history, b)
81
        self.assertRaises(TypeError, RevisionSpec, object)
82
1185.1.39 by Robert Collins
Robey Pointers before: namespace to clear up usage of dates in revision parameters
83
        self.assertEquals(RevisionSpec('date:today').in_history(b),
84
                          (2, 'a@r-0-2'))
1948.4.2 by John Arbash Meinel
Update _match_on_and_check to raise the right error
85
        self.assertRaises(errors.InvalidRevisionSpec,
1704.2.27 by Martin Pool
Run bisection search for revision date with lock held. (Robert Widhopf-Frenk)
86
                          RevisionSpec('date:tomorrow').in_history, b)
1185.1.39 by Robert Collins
Robey Pointers before: namespace to clear up usage of dates in revision parameters
87
        self.assertEquals(RevisionSpec('date:yesterday').in_history(b),
88
                          (1, 'a@r-0-1'))
89
        self.assertEquals(RevisionSpec('before:date:today').in_history(b),
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
90
                          (1, 'a@r-0-1'))
91
92
        self.assertEquals(RevisionSpec('last:1').in_history(b),
93
                          (3, 'a@r-0-3'))
94
        self.assertEquals(RevisionSpec('-1').in_history(b), (3, 'a@r-0-3'))
95
#        self.assertEquals(b.get_revision_info('last:1'), (3, 'a@r-0-3'))
96
#        self.assertEquals(b.get_revision_info('-1'), (3, 'a@r-0-3'))
97
98
        self.assertEquals(RevisionSpec('ancestor:.').in_history(b).rev_id,
99
                          'a@r-0-3')
974.2.7 by aaron.bentley at utoronto
Merged from bzr.24
100
101
        os.mkdir('newbranch')
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
102
        wt2 = self.make_branch_and_tree('newbranch')
103
        b2 = wt2.branch
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
104
        self.assertRaises(NoCommits, RevisionSpec('ancestor:.').in_history, b2)
974.1.81 by Aaron Bentley
Added ancestor revision namepsace
105
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
106
        d3 = b.bzrdir.sprout('copy')
107
        b3 = d3.open_branch()
108
        wt3 = d3.open_workingtree()
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
109
        wt3.commit('Commit four', rev_id='b@r-0-4')
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
110
        self.assertEquals(RevisionSpec('ancestor:.').in_history(b3).rev_id,
111
                          'a@r-0-3')
974.1.81 by Aaron Bentley
Added ancestor revision namepsace
112
        merge(['copy', -1], [None, None])
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
113
        wt.commit('Commit five', rev_id='a@r-0-4')
1185.11.5 by John Arbash Meinel
Merged up-to-date against mainline, still broken.
114
        self.assertEquals(RevisionSpec('ancestor:copy').in_history(b).rev_id,
115
                          'b@r-0-4')
116
        self.assertEquals(RevisionSpec('ancestor:.').in_history(b3).rev_id,
117
                          'b@r-0-4')
1432 by Robert Collins
branch: namespace
118
1185.62.5 by John Arbash Meinel
Updated -r revid:foo so that it can match revisions which aren't in the revision history
119
        # This should be in the revision store, but not in revision-history
120
        self.assertEquals((None, 'b@r-0-4'),
121
                RevisionSpec('revid:b@r-0-4').in_history(b))
122
1432 by Robert Collins
branch: namespace
123
    def test_branch_namespace(self):
124
        """Ensure that the branch namespace pulls in the requisite content."""
125
        self.build_tree(['branch1/', 'branch1/file', 'branch2/'])
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
126
        wt = self.make_branch_and_tree('branch1')
127
        branch = wt.branch
128
        wt.add(['file'])
129
        wt.commit('add file')
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
130
        d2 = branch.bzrdir.sprout('branch2')
1432 by Robert Collins
branch: namespace
131
        print >> open('branch2/file', 'w'), 'new content'
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
132
        branch2 = d2.open_branch()
133
        d2.open_workingtree().commit('update file', rev_id='A')
1432 by Robert Collins
branch: namespace
134
        spec = RevisionSpec('branch:./branch2/.bzr/../')
135
        rev_info = spec.in_history(branch)
136
        self.assertEqual(rev_info, (None, 'A'))
137
1948.4.1 by John Arbash Meinel
Update number parsers to raise InvalidRevisionSpec. Update revno: itself so it supports negative numbers
138
    def test_invalid_revno(self):
139
        self.build_tree(['branch1/', 'branch1/file'])
140
        wt = self.make_branch_and_tree('branch1')
141
        wt.add('file')
142
        wt.commit('first commit', rev_id='r1')
143
        wt.commit('second commit', rev_id='r2')
144
145
        # In the future -20 will probably just fall back to 0
146
        # but for now, we want to make sure it raises the right error
147
        self.assertRaises(errors.InvalidRevisionSpec,
148
                          RevisionSpec('-20').in_history, wt.branch)
149
        self.assertRaises(errors.InvalidRevisionSpec,
150
                          RevisionSpec('10').in_history, wt.branch)
151
152
        self.assertRaises(errors.InvalidRevisionSpec,
153
                          RevisionSpec('revno:-20').in_history, wt.branch)
154
        self.assertRaises(errors.InvalidRevisionSpec,
155
                          RevisionSpec('revno:10').in_history, wt.branch)
156
        self.assertRaises(errors.InvalidRevisionSpec,
157
                          RevisionSpec('revno:a').in_history, wt.branch)