1
1
# (C) 2005 Canonical Ltd
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
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
11
# GNU General Public License for more details.
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
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
21
from bzrlib.branch import Branch
22
22
from bzrlib.errors import NoSuchRevision
23
from bzrlib.commit import commit
24
23
from bzrlib.graph import Graph
25
24
from bzrlib.revision import (find_present_ancestors, combined_graph,
27
is_ancestor, MultipleRevisionSources)
26
is_ancestor, MultipleRevisionSources,
28
28
from bzrlib.tests import TestCaseWithTransport
29
29
from bzrlib.trace import mutter
30
30
from bzrlib.workingtree import WorkingTree
147
147
class TestIntermediateRevisions(TestCaseWithTransport):
150
from bzrlib.commit import commit
151
150
TestCaseWithTransport.setUp(self)
152
151
self.br1, self.br2 = make_branches(self)
153
152
wt1 = self.br1.bzrdir.open_workingtree()
223
222
self.assertTrue(common_ancestor(revisions_2[6], revisions[5], sources),
224
223
(revisions[4], revisions_2[5]))
225
224
self.assertEqual(None, common_ancestor(None, revisions[5], sources))
225
self.assertEqual(NULL_REVISION,
226
common_ancestor(NULL_REVISION, NULL_REVISION, sources))
227
self.assertEqual(NULL_REVISION,
228
common_ancestor(revisions[0], NULL_REVISION, sources))
229
self.assertEqual(NULL_REVISION,
230
common_ancestor(NULL_REVISION, revisions[0], sources))
227
232
def test_combined(self):
228
233
"""combined_graph
292
297
self.assertEqual({'B':['A'],
294
299
source.get_revision_graph('B'))
301
class TestRevisionAttributes(TestCaseWithTransport):
302
"""Test that revision attributes are correct."""
304
def test_revision_accessors(self):
305
"""Make sure the values that come out of a revision are the same as the ones that go in.
307
tree1 = self.make_branch_and_tree("br1")
310
tree1.commit(message="quux", allow_pointless=True, committer="jaq",
311
revprops={'empty':'',
314
'multiline':'foo\nbar\n\n'
316
assert len(tree1.branch.revision_history()) > 0
317
rev_a = tree1.branch.repository.get_revision(tree1.branch.last_revision())
319
tree2 = self.make_branch_and_tree("br2")
320
tree2.commit(message=rev_a.message,
321
timestamp=rev_a.timestamp,
322
timezone=rev_a.timezone,
323
committer=rev_a.committer,
324
rev_id=rev_a.revision_id,
325
revprops=rev_a.properties,
326
allow_pointless=True, # there's nothing in this commit
329
rev_b = tree2.branch.repository.get_revision(tree2.branch.last_revision())
331
self.assertEqual(rev_a.message, rev_b.message)
332
self.assertEqual(rev_a.timestamp, rev_b.timestamp)
333
self.assertEqual(rev_a.timezone, rev_b.timezone)
334
self.assertEqual(rev_a.committer, rev_b.committer)
335
self.assertEqual(rev_a.revision_id, rev_b.revision_id)
336
self.assertEqual(rev_a.properties, rev_b.properties)