1
# Copyright (C) 2005-2010 Canonical Ltd
1
# Copyright (C) 2005-2011 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
69
63
def test_text_factory_confirm(self):
70
64
# turns into reading a regular boolean
71
65
ui = self.make_test_ui_factory('n\n')
72
self.assertEquals(ui.confirm_action('Should %(thing)s pass?',
66
self.assertEquals(ui.confirm_action(u'Should %(thing)s pass?',
73
67
'bzrlib.tests.test_ui.confirmation',
74
68
{'thing': 'this'},),
125
119
stdout = tests.StringIOWrapper()
126
120
stderr = tests.StringIOWrapper()
127
121
factory = _mod_ui_text.TextUIFactory(stdin, stdout, stderr)
128
self.assertEqual(True, factory.get_boolean(""))
129
self.assertEqual(False, factory.get_boolean(""))
130
self.assertEqual(True, factory.get_boolean(""))
131
self.assertEqual(False, factory.get_boolean(""))
132
self.assertEqual(True, factory.get_boolean(""))
133
self.assertEqual(False, factory.get_boolean(""))
122
self.assertEqual(True, factory.get_boolean(u""))
123
self.assertEqual(False, factory.get_boolean(u""))
124
self.assertEqual(True, factory.get_boolean(u""))
125
self.assertEqual(False, factory.get_boolean(u""))
126
self.assertEqual(True, factory.get_boolean(u""))
127
self.assertEqual(False, factory.get_boolean(u""))
134
128
self.assertEqual("foo\n", factory.stdin.read())
135
129
# stdin should be empty
136
130
self.assertEqual('', factory.stdin.readline())
143
137
stdout = tests.StringIOWrapper()
144
138
stderr = tests.StringIOWrapper()
145
139
factory = _mod_ui_text.TextUIFactory(stdin, stdout, stderr)
146
self.assertEqual(1, factory.get_integer(""))
147
self.assertEqual(-2, factory.get_integer(""))
148
self.assertEqual(42, factory.get_integer(""))
140
self.assertEqual(1, factory.get_integer(u""))
141
self.assertEqual(-2, factory.get_integer(u""))
142
self.assertEqual(42, factory.get_integer(u""))
150
144
def test_text_factory_prompt(self):
151
145
# see <https://launchpad.net/bugs/365891>
152
146
StringIO = tests.StringIOWrapper
153
147
factory = _mod_ui_text.TextUIFactory(StringIO(), StringIO(), StringIO())
154
factory.prompt('foo %2e')
148
factory.prompt(u'foo %2e')
155
149
self.assertEqual('', factory.stdout.getvalue())
156
150
self.assertEqual('foo %2e', factory.stderr.getvalue())
158
152
def test_text_factory_prompts_and_clears(self):
159
153
# a get_boolean call should clear the pb before prompting
160
154
out = test_progress._TTYStringIO()
161
os.environ['TERM'] = 'xterm'
155
self.overrideEnv('TERM', 'xterm')
162
156
factory = _mod_ui_text.TextUIFactory(
163
157
stdin=tests.StringIOWrapper("yada\ny\n"),
164
158
stdout=out, stderr=out)
201
195
factory.stdout.encoding = "utf8"
202
196
# there is no output from the base factory
203
197
self.assertEqual("someuser",
204
factory.get_username('Hello %(host)s', host='some'))
198
factory.get_username(u'Hello %(host)s', host='some'))
205
199
self.assertEquals("Hello some: ", factory.stderr.getvalue())
206
200
self.assertEquals('', factory.stdout.getvalue())
207
self.assertEqual("", factory.get_username("Gebruiker"))
201
self.assertEqual("", factory.get_username(u"Gebruiker"))
208
202
# stdin should be empty
209
203
self.assertEqual('', factory.stdin.readline())
228
222
def test_quietness(self):
229
os.environ['BZR_PROGRESS_BAR'] = 'text'
223
self.overrideEnv('BZR_PROGRESS_BAR', 'text')
230
224
ui_factory = _mod_ui_text.TextUIFactory(None,
231
225
test_progress._TTYStringIO(),
232
226
test_progress._TTYStringIO())
239
233
def test_text_ui_show_user_warning(self):
240
234
from bzrlib.repofmt.groupcompress_repo import RepositoryFormat2a
241
from bzrlib.repofmt.pack_repo import RepositoryFormatKnitPack5
235
from bzrlib.repofmt.knitpack_repo import RepositoryFormatKnitPack5
244
238
ui = tests.TextUIFactory(stdin=None, stdout=out, stderr=err)
313
307
# however, it can still be forced on
314
308
(FileStringIO, 'dumb', 'text', _mod_ui_text.TextProgressView),
316
os.environ['TERM'] = term
318
if 'BZR_PROGRESS_BAR' in os.environ:
319
del os.environ['BZR_PROGRESS_BAR']
321
os.environ['BZR_PROGRESS_BAR'] = pb
310
self.overrideEnv('TERM', term)
311
self.overrideEnv('BZR_PROGRESS_BAR', pb)
322
312
stdin = file_class('')
323
313
stderr = file_class()
324
314
stdout = file_class()
335
325
stderr = test_progress._NonTTYStringIO()
336
326
stdout = test_progress._NonTTYStringIO()
337
327
for term_type in ['dumb', None, 'xterm']:
338
if term_type is None:
339
del os.environ['TERM']
341
os.environ['TERM'] = term_type
328
self.overrideEnv('TERM', term_type)
342
329
uif = _mod_ui.make_ui_for_terminal(stdin, stdout, stderr)
343
330
self.assertIsInstance(uif, _mod_ui_text.TextUIFactory,
344
331
'TERM=%r' % (term_type,))
365
352
self.assertRaises(
366
353
NotImplementedError,
367
354
self.apply_redirected,
368
None, stdout, stdout, factory.get_boolean, "foo")
355
None, stdout, stdout, factory.get_boolean, u"foo")
371
358
class TestUIFactoryTests(tests.TestCase):
385
372
def test_canned_input_get_input(self):
386
373
uif = _mod_ui.CannedInputUIFactory([True, 'mbp', 'password', 42])
387
self.assertEqual(True, uif.get_boolean('Extra cheese?'))
388
self.assertEqual('mbp', uif.get_username('Enter your user name'))
374
self.assertEqual(True, uif.get_boolean(u'Extra cheese?'))
375
self.assertEqual('mbp', uif.get_username(u'Enter your user name'))
389
376
self.assertEqual('password',
390
uif.get_password('Password for %(host)s',
377
uif.get_password(u'Password for %(host)s',
391
378
host='example.com'))
392
self.assertEqual(42, uif.get_integer('And all that jazz ?'))
379
self.assertEqual(42, uif.get_integer(u'And all that jazz ?'))
395
382
class TestBoolFromString(tests.TestCase):