Rev 2341: (Marien Zwart) RevisionSpec.from_string() should support Unicode parameters. (especially for revid:) in http://bzr.arbash-meinel.com/branches/bzr/jam-integration
John Arbash Meinel
john at arbash-meinel.com
Mon Mar 12 16:29:55 GMT 2007
At http://bzr.arbash-meinel.com/branches/bzr/jam-integration
------------------------------------------------------------
revno: 2341
revision-id: john at arbash-meinel.com-20070312162947-y3a3fjf0iwalwot5
parent: pqm at pqm.ubuntu.com-20070312161518-2706316ad769b56a
parent: marienz at gentoo.org-20070311181444-9p0nwvaljp1h42xh
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: jam-integration
timestamp: Mon 2007-03-12 10:29:47 -0600
message:
(Marien Zwart) RevisionSpec.from_string() should support Unicode parameters. (especially for revid:)
modified:
bzrlib/revisionspec.py revisionspec.py-20050907152633-17567659fd5c0ddb
bzrlib/tests/blackbox/test_tags.py test_tags.py-20070116132048-5h4qak2cm22jlb9e-1
bzrlib/tests/test_revisionnamespaces.py testrevisionnamespaces.py-20050711050225-8b4af89e6b1efe84
------------------------------------------------------------
revno: 2325.2.5
merged: marienz at gentoo.org-20070311181444-9p0nwvaljp1h42xh
parent: marienz at gentoo.org-20070309042901-n5sben4mqbf6iwgj
committer: Marien Zwart <marienz at gentoo.org>
branch nick: bzr.dev
timestamp: Sun 2007-03-11 19:14:44 +0100
message:
Call osutils.safe_revision_id instead of duplicating it.
------------------------------------------------------------
revno: 2325.2.4
merged: marienz at gentoo.org-20070309042901-n5sben4mqbf6iwgj
parent: marienz at gentoo.org-20070309042706-173aok1s5f30rcuj
committer: Marien Zwart <marienz at gentoo.org>
branch nick: bzr.dev
timestamp: Fri 2007-03-09 05:29:01 +0100
message:
Rename rev_id to revision_id because HACKING says so.
------------------------------------------------------------
revno: 2325.2.3
merged: marienz at gentoo.org-20070309042706-173aok1s5f30rcuj
parent: marienz at gentoo.org-20070308185109-wdlc2839v8qcuqhc
committer: Marien Zwart <marienz at gentoo.org>
branch nick: bzr.dev
timestamp: Fri 2007-03-09 05:27:06 +0100
message:
Make the revid RevisionSpec also support utf8-encoded bytestrings.
------------------------------------------------------------
revno: 2325.2.2
merged: marienz at gentoo.org-20070308185109-wdlc2839v8qcuqhc
parent: marienz at gentoo.org-20070308171357-7u3cn4ra7m2zhw0w
committer: Marien Zwart <marienz at gentoo.org>
branch nick: bzr.dev
timestamp: Thu 2007-03-08 19:51:09 +0100
message:
Make the revid RevisionSpec always return a str object, not a unicode object.
------------------------------------------------------------
revno: 2325.2.1
merged: marienz at gentoo.org-20070308171357-7u3cn4ra7m2zhw0w
parent: pqm at pqm.ubuntu.com-20070307233124-ad2724bf65e09035
committer: Marien Zwart <marienz at gentoo.org>
branch nick: bzr.dev
timestamp: Thu 2007-03-08 18:13:57 +0100
message:
Make the test suite failure reporting a bit more robust.
-------------- next part --------------
=== modified file 'bzrlib/revisionspec.py'
--- a/bzrlib/revisionspec.py 2007-03-11 20:25:39 +0000
+++ b/bzrlib/revisionspec.py 2007-03-12 16:29:47 +0000
@@ -21,6 +21,7 @@
from bzrlib import (
errors,
+ osutils,
revision,
symbol_versioning,
trace,
@@ -379,7 +380,11 @@
prefix = 'revid:'
def _match_on(self, branch, revs):
- return RevisionInfo.from_revision_id(branch, self.spec, revs)
+ # self.spec comes straight from parsing the command line arguments,
+ # so we expect it to be a Unicode string. Switch it to the internal
+ # representation.
+ revision_id = osutils.safe_revision_id(self.spec, warn=False)
+ return RevisionInfo.from_revision_id(branch, revision_id, revs)
SPEC_TYPES.append(RevisionSpec_revid)
=== modified file 'bzrlib/tests/blackbox/test_tags.py'
--- a/bzrlib/tests/blackbox/test_tags.py 2007-03-06 06:35:00 +0000
+++ b/bzrlib/tests/blackbox/test_tags.py 2007-03-08 18:51:09 +0000
@@ -60,6 +60,11 @@
# can also create tags using -r
self.run_bzr('tag', '-d', 'branch', 'tag2', '-r1')
self.assertEquals(t.branch.tags.lookup_tag('tag2'), 'first-revid')
+ # regression test: make sure a unicode revision from the user
+ # gets turned into a str object properly. The use of a unicode
+ # object for the revid is intentional.
+ self.run_bzr('tag', '-d', 'branch', 'tag3', u'-rrevid:first-revid')
+ self.assertEquals(t.branch.tags.lookup_tag('tag3'), 'first-revid')
# can also delete an existing tag
out, err = self.run_bzr('tag', '--delete', '-d', 'branch', 'tag2')
# cannot replace an existing tag normally
=== modified file 'bzrlib/tests/test_revisionnamespaces.py'
--- a/bzrlib/tests/test_revisionnamespaces.py 2007-03-11 04:53:13 +0000
+++ b/bzrlib/tests/test_revisionnamespaces.py 2007-03-12 16:29:47 +0000
@@ -67,11 +67,11 @@
def assertInHistoryIs(self, exp_revno, exp_revision_id, revision_spec):
rev_info = self.get_in_history(revision_spec)
self.assertEqual(exp_revno, rev_info.revno,
- 'Revision spec: %s returned wrong revno: %s != %s'
+ 'Revision spec: %r returned wrong revno: %r != %r'
% (revision_spec, exp_revno, rev_info.revno))
self.assertEqual(exp_revision_id, rev_info.rev_id,
- 'Revision spec: %s returned wrong revision id:'
- ' %s != %s'
+ 'Revision spec: %r returned wrong revision id:'
+ ' %r != %r'
% (revision_spec, exp_revision_id, rev_info.rev_id))
def assertInvalid(self, revision_spec, extra=''):
@@ -277,6 +277,13 @@
revision_id='alt_r3')
self.assertInHistoryIs(None, 'alt_r3', 'revid:alt_r3')
+ def test_unicode(self):
+ """We correctly convert a unicode ui string to an encoded revid."""
+ revision_id = u'\N{SNOWMAN}'.encode('utf-8')
+ self.tree.commit('unicode', rev_id=revision_id)
+ self.assertInHistoryIs(3, revision_id, u'revid:\N{SNOWMAN}')
+ self.assertInHistoryIs(3, revision_id, 'revid:' + revision_id)
+
class TestRevisionSpec_last(TestRevisionSpec):
More information about the bazaar-commits
mailing list