Rev 6448: (jelmer) Add RevisionHistoryMatches matcher. (Jelmer Vernooij) in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/2.5/
Patch Queue Manager
pqm at pqm.ubuntu.com
Thu Jan 19 14:09:51 UTC 2012
At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/2.5/
------------------------------------------------------------
revno: 6448 [merge]
revision-id: pqm at pqm.ubuntu.com-20120119140950-vyytyv8gf83qynav
parent: pqm at pqm.ubuntu.com-20120119134240-g8me32sn0s86c6r1
parent: jelmer at samba.org-20120119120613-w22kh2hk0q3g0jng
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: 2.5
timestamp: Thu 2012-01-19 14:09:50 +0000
message:
(jelmer) Add RevisionHistoryMatches matcher. (Jelmer Vernooij)
modified:
bzrlib/tests/matchers.py matchers.py-20100506074820-iiipsgdue8dhvidy-1
bzrlib/tests/test_commit_merge.py test_commit_merge.py-20050920084723-819eeeff77907bc5
bzrlib/tests/test_matchers.py test_matchers.py-20100506074820-iiipsgdue8dhvidy-2
doc/en/release-notes/bzr-2.5.txt bzr2.5.txt-20110708125756-587p0hpw7oke4h05-1
=== modified file 'bzrlib/tests/matchers.py'
--- a/bzrlib/tests/matchers.py 2011-12-14 12:15:44 +0000
+++ b/bzrlib/tests/matchers.py 2012-01-06 22:44:57 +0000
@@ -31,6 +31,7 @@
'MatchesAncestry',
'ContainsNoVfsCalls',
'ReturnsUnlockable',
+ 'RevisionHistoryMatches',
]
from bzrlib import (
@@ -184,6 +185,31 @@
return Equals(entries).match(actual)
+class RevisionHistoryMatches(Matcher):
+ """A matcher that checks if a branch has a specific revision history.
+
+ :ivar history: Revision history, as list of revisions. Oldest first.
+ """
+
+ def __init__(self, history):
+ Matcher.__init__(self)
+ self.expected = history
+
+ def __str__(self):
+ return 'RevisionHistoryMatches(%r)' % self.expected
+
+ def match(self, branch):
+ branch.lock_read()
+ try:
+ graph = branch.repository.get_graph()
+ history = list(graph.iter_lefthand_ancestry(
+ branch.last_revision(), [_mod_revision.NULL_REVISION]))
+ history.reverse()
+ finally:
+ branch.unlock()
+ return Equals(self.expected).match(history)
+
+
class _NoVfsCallsMismatch(Mismatch):
"""Mismatch describing a list of HPSS calls which includes VFS requests."""
=== modified file 'bzrlib/tests/test_commit_merge.py'
--- a/bzrlib/tests/test_commit_merge.py 2011-10-05 18:11:19 +0000
+++ b/bzrlib/tests/test_commit_merge.py 2011-12-13 21:20:35 +0000
@@ -20,7 +20,6 @@
from bzrlib import (
check,
osutils,
- revision as _mod_revision,
)
from bzrlib.errors import PointlessCommit
from bzrlib.tests import (
@@ -29,6 +28,7 @@
from bzrlib.tests.features import (
SymlinkFeature,
)
+from bzrlib.tests.matchers import RevisionHistoryMatches
class TestCommitMerge(TestCaseWithTransport):
@@ -61,10 +61,9 @@
self.assertEquals(by.revno(), 3)
graph = wty.branch.repository.get_graph()
self.addCleanup(wty.lock_read().unlock)
- self.assertEquals(list(
- graph.iter_lefthand_ancestry(by.last_revision(),
- [_mod_revision.NULL_REVISION])),
- ['y at u-0-2', 'y at u-0-1', base_rev])
+ self.assertThat(by,
+ RevisionHistoryMatches([base_rev, 'y at u-0-1', 'y at u-0-2'])
+ )
rev = by.repository.get_revision('y at u-0-2')
self.assertEquals(rev.parent_ids,
['y at u-0-1', 'x at u-0-1'])
=== modified file 'bzrlib/tests/test_matchers.py'
--- a/bzrlib/tests/test_matchers.py 2011-12-14 12:15:44 +0000
+++ b/bzrlib/tests/test_matchers.py 2012-01-06 22:53:14 +0000
@@ -178,3 +178,27 @@
self.assertEquals([calls[0].call], mismatch.vfs_calls)
self.assertEquals("no VFS calls expected, got: append('file')""",
mismatch.describe())
+
+
+class TestRevisionHistoryMatches(TestCaseWithTransport):
+
+ def test_empty(self):
+ tree = self.make_branch_and_tree('.')
+ matcher = RevisionHistoryMatches([])
+ self.assertIs(None, matcher.match(tree.branch))
+
+ def test_matches(self):
+ tree = self.make_branch_and_tree('.')
+ tree.commit('msg1', rev_id='a')
+ tree.commit('msg2', rev_id='b')
+ matcher = RevisionHistoryMatches(['a', 'b'])
+ self.assertIs(None, matcher.match(tree.branch))
+
+ def test_mismatch(self):
+ tree = self.make_branch_and_tree('.')
+ tree.commit('msg1', rev_id='a')
+ tree.commit('msg2', rev_id='b')
+ matcher = RevisionHistoryMatches(['a', 'b', 'c'])
+ self.assertEquals(
+ "['a', 'b', 'c'] != ['a', 'b']",
+ matcher.match(tree.branch).describe())
=== modified file 'doc/en/release-notes/bzr-2.5.txt'
--- a/doc/en/release-notes/bzr-2.5.txt 2012-01-19 13:42:40 +0000
+++ b/doc/en/release-notes/bzr-2.5.txt 2012-01-19 14:09:50 +0000
@@ -61,6 +61,8 @@
.. Major internal changes, unlikely to be visible to users or plugin
developers, but interesting for bzr developers.
+* A new matcher ``RevisionHistoryMatches`` has been added. (Jelmer Vernooij)
+
* ``MutableTree`` has two new hooks ``pre_transform`` and
``post_transform`` that are called for tree transform operations.
(Jelmer Vernooij, #912084)
More information about the bazaar-commits
mailing list