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