Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/ui.py @ 28039:89003c49315c stable
ui: fix crash by non-interactive prompt echo for user name
Since we've dropped a str cast at write() by f04bd381e8c0, ui.prompt() should
convert default to '' if it is None. Otherwise, write() would fail with
"TypeError: object of type 'NoneType' has no len()".
This patch includes the tests for both interactive and non-interactive cases
because "ui.askusername" was never tested.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 06 Feb 2016 20:43:20 +0900 |
parents | e70c97cc9243 |
children | 41dcd7545266 |
comparison
equal
deleted
inserted
replaced
28038:72f2a19c5f88 | 28039:89003c49315c |
---|---|
796 def prompt(self, msg, default="y"): | 796 def prompt(self, msg, default="y"): |
797 """Prompt user with msg, read response. | 797 """Prompt user with msg, read response. |
798 If ui is not interactive, the default is returned. | 798 If ui is not interactive, the default is returned. |
799 """ | 799 """ |
800 if not self.interactive(): | 800 if not self.interactive(): |
801 self.write(msg, ' ', default, "\n") | 801 self.write(msg, ' ', default or '', "\n") |
802 return default | 802 return default |
803 try: | 803 try: |
804 r = self._readline(self.label(msg, 'ui.prompt')) | 804 r = self._readline(self.label(msg, 'ui.prompt')) |
805 if not r: | 805 if not r: |
806 r = default | 806 r = default |