Rev 6568: (vila) AuthConfig alwaus return user/password as unicode. (Vincent Ladeuil) in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
Patch Queue Manager
pqm at pqm.ubuntu.com
Wed Oct 10 18:45:21 UTC 2012
At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 6568 [merge]
revision-id: pqm at pqm.ubuntu.com-20121010184521-wzqd4ei53vnrcdnc
parent: pqm at pqm.ubuntu.com-20120928072223-m8dp02j933yp9j60
parent: v.ladeuil+lp at free.fr-20120917090656-gthx72qbn88wbmgz
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2012-10-10 18:45:21 +0000
message:
(vila) AuthConfig alwaus return user/password as unicode. (Vincent Ladeuil)
modified:
bzrlib/tests/test_ui.py test_ui.py-20051130162854-458e667a7414af09
bzrlib/ui/text.py text.py-20051130153916-2e438cffc8afc478
doc/en/release-notes/bzr-2.6.txt bzr2.6.txt-20120116134316-8w1xxom1c7vcu1t5-1
=== modified file 'bzrlib/tests/test_ui.py'
--- a/bzrlib/tests/test_ui.py 2012-08-02 11:45:26 +0000
+++ b/bzrlib/tests/test_ui.py 2012-09-17 09:06:56 +0000
@@ -97,28 +97,20 @@
pb.finished()
def test_text_factory_utf8_password(self):
- """Test an utf8 password.
-
- We can't predict what encoding users will have for stdin, so we force
- it to utf8 to test that we transport the password correctly.
- """
- ui = self.make_test_ui_factory(u'baz\u1234'.encode('utf8'))
+ """Test an utf8 password."""
+ ui = _mod_ui_text.TextUIFactory(None, None, None)
+ ui.stdin = tests.StringIOWrapper(u'baz\u1234'.encode('utf8'))
+ ui.stdout = tests.StringIOWrapper()
+ ui.stderr = tests.StringIOWrapper()
ui.stderr.encoding = ui.stdout.encoding = ui.stdin.encoding = 'utf8'
pb = ui.nested_progress_bar()
- try:
- password = self.apply_redirected(ui.stdin, ui.stdout, ui.stderr,
- ui.get_password,
- u'Hello \u1234 %(user)s',
- user=u'some\u1234')
- # We use StringIO objects, we need to decode them
- self.assertEqual(u'baz\u1234', password.decode('utf8'))
- self.assertEqual(u'Hello \u1234 some\u1234: ',
- ui.stderr.getvalue().decode('utf8'))
- # stdin and stdout should be empty
- self.assertEqual('', ui.stdin.readline())
- self.assertEqual('', ui.stdout.readline())
- finally:
- pb.finished()
+ password = ui.get_password(u'Hello \u1234 %(user)s', user=u'some\u1234')
+ self.assertEqual(u'baz\u1234', password)
+ self.assertEqual(u'Hello \u1234 some\u1234: ',
+ ui.stderr.getvalue().decode('utf8'))
+ # stdin and stdout should be empty
+ self.assertEqual('', ui.stdin.readline())
+ self.assertEqual('', ui.stdout.getvalue())
def test_text_ui_get_boolean(self):
stdin = tests.StringIOWrapper("y\n" # True
@@ -270,36 +262,30 @@
pb.finished()
def test_text_ui_getusername(self):
- factory = _mod_ui_text.TextUIFactory(None, None, None)
- factory.stdin = tests.StringIOWrapper("someuser\n\n")
- factory.stdout = tests.StringIOWrapper()
- factory.stderr = tests.StringIOWrapper()
- factory.stdout.encoding = "utf8"
- # there is no output from the base factory
- self.assertEqual("someuser",
- factory.get_username(u'Hello %(host)s', host='some'))
- self.assertEquals("Hello some: ", factory.stderr.getvalue())
- self.assertEquals('', factory.stdout.getvalue())
- self.assertEqual("", factory.get_username(u"Gebruiker"))
+ ui = _mod_ui_text.TextUIFactory(None, None, None)
+ ui.stdin = tests.StringIOWrapper('someuser\n\n')
+ ui.stdout = tests.StringIOWrapper()
+ ui.stderr = tests.StringIOWrapper()
+ ui.stdout.encoding = 'utf8'
+ self.assertEqual('someuser',
+ ui.get_username(u'Hello %(host)s', host='some'))
+ self.assertEquals('Hello some: ', ui.stderr.getvalue())
+ self.assertEquals('', ui.stdout.getvalue())
+ self.assertEqual('', ui.get_username(u"Gebruiker"))
# stdin should be empty
- self.assertEqual('', factory.stdin.readline())
+ self.assertEqual('', ui.stdin.readline())
def test_text_ui_getusername_utf8(self):
- ui = tests.TestUIFactory(stdin=u'someuser\u1234'.encode('utf8'),
- stdout=tests.StringIOWrapper(),
- stderr=tests.StringIOWrapper())
+ ui = _mod_ui_text.TextUIFactory(None, None, None)
+ ui.stdin = tests.StringIOWrapper(u'someuser\u1234'.encode('utf8'))
+ ui.stdout = tests.StringIOWrapper()
+ ui.stderr = tests.StringIOWrapper()
ui.stderr.encoding = ui.stdout.encoding = ui.stdin.encoding = "utf8"
- pb = ui.nested_progress_bar()
- try:
- # there is no output from the base factory
- username = self.apply_redirected(ui.stdin, ui.stdout, ui.stderr,
- ui.get_username, u'Hello\u1234 %(host)s', host=u'some\u1234')
- self.assertEquals(u"someuser\u1234", username.decode('utf8'))
- self.assertEquals(u"Hello\u1234 some\u1234: ",
- ui.stderr.getvalue().decode("utf8"))
- self.assertEquals('', ui.stdout.getvalue())
- finally:
- pb.finished()
+ username = ui.get_username(u'Hello %(host)s', host=u'some\u1234')
+ self.assertEquals(u"someuser\u1234", username)
+ self.assertEquals(u"Hello some\u1234: ",
+ ui.stderr.getvalue().decode("utf8"))
+ self.assertEquals('', ui.stdout.getvalue())
def test_quietness(self):
self.overrideEnv('BZR_PROGRESS_BAR', 'text')
=== modified file 'bzrlib/ui/text.py'
--- a/bzrlib/ui/text.py 2012-09-19 07:07:39 +0000
+++ b/bzrlib/ui/text.py 2012-10-10 18:45:21 +0000
@@ -238,8 +238,11 @@
password = self.stdin.readline()
if not password:
password = None
- elif password[-1] == '\n':
- password = password[:-1]
+ else:
+ password = password.decode(self.stdin.encoding)
+
+ if password[-1] == '\n':
+ password = password[:-1]
return password
def get_password(self, prompt=u'', **kwargs):
@@ -273,8 +276,10 @@
username = self.stdin.readline()
if not username:
username = None
- elif username[-1] == '\n':
- username = username[:-1]
+ else:
+ username = username.decode(self.stdin.encoding)
+ if username[-1] == '\n':
+ username = username[:-1]
return username
def make_progress_view(self):
=== modified file 'doc/en/release-notes/bzr-2.6.txt'
--- a/doc/en/release-notes/bzr-2.6.txt 2012-09-25 08:26:01 +0000
+++ b/doc/en/release-notes/bzr-2.6.txt 2012-10-10 18:45:21 +0000
@@ -57,6 +57,9 @@
and would be ignored.
(Haw Loeung, #932515)
+* ``Authentication.Config`` now always returns unicode user names and passwords.
+ (Vincent Ladeuil, #514301)
+
* Warn when ``--show-base`` is used for ``pull`` in a treeless branch
instead of failing. It's useless but harmless. (Vincent Ladeuil, #1022160)
More information about the bazaar-commits
mailing list