Rev 415: Merge simple_mainline so that we get test_history.py in http://bazaar.launchpad.net/~jameinel/loggerhead/page_loading
John Arbash Meinel
john at arbash-meinel.com
Sat Mar 12 15:15:07 UTC 2011
At http://bazaar.launchpad.net/~jameinel/loggerhead/page_loading
------------------------------------------------------------
revno: 415 [merge]
revision-id: john at arbash-meinel.com-20110312151502-1jf0iefjucvkw3qm
parent: john at arbash-meinel.com-20110312132552-ojgebpxsmdlopwiw
parent: john at arbash-meinel.com-20110311095024-7bmh9c7xs43fb9g5
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: page_loading
timestamp: Sat 2011-03-12 16:15:02 +0100
message:
Merge simple_mainline so that we get test_history.py
added:
loggerhead/tests/test_history.py test_history.py-20110311094724-qreaf3ppfbus5rym-1
modified:
loggerhead/history.py history.py-20061211064342-102iqirsciyvgtcf-5
loggerhead/tests/__init__.py __init__.py-20061211064342-102iqirsciyvgtcf-29
-------------- next part --------------
=== modified file 'loggerhead/history.py'
--- a/loggerhead/history.py 2011-03-12 13:25:52 +0000
+++ b/loggerhead/history.py 2011-03-12 15:15:02 +0000
@@ -327,7 +327,16 @@
revid in revid_list.
"""
if revid_list is None:
- revid_list = [r[0][1] for r in self._rev_info]
+ # Just yield the mainline, starting at start_revid
+ revid = start_revid
+ is_null = bzrlib.revision.is_null
+ while not is_null(revid):
+ yield revid
+ parents = self._rev_info[self._rev_indices[revid]][2]
+ if not parents:
+ return
+ revid = parents[0]
+ return
revid_set = set(revid_list)
revid = start_revid
=== modified file 'loggerhead/tests/__init__.py'
--- a/loggerhead/tests/__init__.py 2011-03-12 13:25:52 +0000
+++ b/loggerhead/tests/__init__.py 2011-03-12 15:15:02 +0000
@@ -1,4 +1,4 @@
-# Copyright 2006, 2011 Canonical Ltd
+# Copyright 2006, 2010, 2011 Canonical Ltd
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -20,6 +20,7 @@
(__name__ + '.' + x) for x in [
'test_controllers',
'test_corners',
+ 'test_history',
'test_load_test',
'test_simple',
'test_templating',
=== added file 'loggerhead/tests/test_history.py'
--- a/loggerhead/tests/test_history.py 1970-01-01 00:00:00 +0000
+++ b/loggerhead/tests/test_history.py 2011-03-11 09:50:24 +0000
@@ -0,0 +1,114 @@
+# Copyright (C) 2011 Canonical Ltd.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+"""Direct tests of the loggerhead/history.py module"""
+
+from bzrlib import tests
+
+from loggerhead import history
+
+
+class TestHistoryGetRevidsFrom(tests.TestCaseWithMemoryTransport):
+
+ def make_linear_ancestry(self):
+ # Time goes up
+ # rev-3
+ # |
+ # rev-2
+ # |
+ # rev-1
+ builder = self.make_branch_builder('branch')
+ builder.start_series()
+ builder.build_snapshot('rev-1', None, [
+ ('add', ('', 'root-id', 'directory', None))])
+ builder.build_snapshot('rev-2', ['rev-1'], [])
+ builder.build_snapshot('rev-3', ['rev-2'], [])
+ builder.finish_series()
+ b = builder.get_branch()
+ self.addCleanup(b.lock_read().unlock)
+ return history.History(b, {})
+
+ def make_merged_ancestry(self):
+ # Time goes up
+ # rev-3
+ # | \
+ # | rev-2
+ # | /
+ # rev-1
+ builder = self.make_branch_builder('branch')
+ builder.start_series()
+ builder.build_snapshot('rev-1', None, [
+ ('add', ('', 'root-id', 'directory', None))])
+ builder.build_snapshot('rev-2', ['rev-1'], [])
+ builder.build_snapshot('rev-3', ['rev-1', 'rev-2'], [])
+ builder.finish_series()
+ b = builder.get_branch()
+ self.addCleanup(b.lock_read().unlock)
+ return history.History(b, {})
+
+ def make_deep_merged_ancestry(self):
+ # Time goes up
+ # F
+ # |\
+ # | E
+ # | |\
+ # | | D
+ # | |/
+ # B C
+ # |/
+ # A
+ builder = self.make_branch_builder('branch')
+ builder.start_series()
+ builder.build_snapshot('A', None, [
+ ('add', ('', 'root-id', 'directory', None))])
+ builder.build_snapshot('B', ['A'], [])
+ builder.build_snapshot('C', ['A'], [])
+ builder.build_snapshot('D', ['C'], [])
+ builder.build_snapshot('E', ['C', 'D'], [])
+ builder.build_snapshot('F', ['B', 'E'], [])
+ builder.finish_series()
+ b = builder.get_branch()
+ self.addCleanup(b.lock_read().unlock)
+ return history.History(b, {})
+
+ def assertRevidsFrom(self, expected, his, search_revs, tip_rev):
+ self.assertEqual(expected,
+ list(his.get_revids_from(search_revs, tip_rev)))
+
+ def test_get_revids_from_simple_mainline(self):
+ his = self.make_linear_ancestry()
+ self.assertRevidsFrom(['rev-3', 'rev-2', 'rev-1'],
+ his, None, 'rev-3')
+
+ def test_get_revids_from_merged_mainline(self):
+ his = self.make_merged_ancestry()
+ self.assertRevidsFrom(['rev-3', 'rev-1'],
+ his, None, 'rev-3')
+
+ def test_get_revids_given_one_rev(self):
+ his = self.make_merged_ancestry()
+ # rev-3 was the first mainline revision to see rev-2.
+ self.assertRevidsFrom(['rev-3'], his, ['rev-2'], 'rev-3')
+
+ def test_get_revids_deep_ancestry(self):
+ his = self.make_deep_merged_ancestry()
+ self.assertRevidsFrom(['F'], his, ['F'], 'F')
+ self.assertRevidsFrom(['F'], his, ['E'], 'F')
+ self.assertRevidsFrom(['F'], his, ['D'], 'F')
+ self.assertRevidsFrom(['F'], his, ['C'], 'F')
+ self.assertRevidsFrom(['B'], his, ['B'], 'F')
+ self.assertRevidsFrom(['A'], his, ['A'], 'F')
More information about the bazaar-commits
mailing list