~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_ui.py

  • Committer: John Arbash Meinel
  • Date: 2007-03-14 20:47:17 UTC
  • mto: (2353.4.2 locking)
  • mto: This revision was merged to the branch mainline in revision 2360.
  • Revision ID: john@arbash-meinel.com-20070314204717-htynwogv97fqr22a
Cleanup errors, and change ReadOnlyLockError to pass around more details.

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
 
25
25
import bzrlib
26
26
import bzrlib.errors as errors
27
 
from bzrlib.progress import (
28
 
    DotsProgressBar,
29
 
    ProgressBarStack,
30
 
    TTYProgressBar,
31
 
    )
 
27
from bzrlib.progress import DotsProgressBar, TTYProgressBar, ProgressBarStack
32
28
from bzrlib.tests import (
33
 
    TestCase,
34
29
    TestUIFactory,
35
30
    StringIOWrapper,
 
31
    TestCase,
36
32
    )
37
33
from bzrlib.tests.test_progress import _TTYStringIO
38
 
from bzrlib.ui import (
39
 
    CLIUIFactory,
40
 
    SilentUIFactory,
41
 
    )
 
34
from bzrlib.ui import SilentUIFactory
42
35
from bzrlib.ui.text import TextUIFactory
43
36
 
44
37
 
68
61
                                                   ui.get_password))
69
62
            # ': ' is appended to prompt
70
63
            self.assertEqual(': ', ui.stdout.getvalue())
71
 
            # stdin should be empty
72
 
            self.assertEqual('', ui.stdin.readline())
73
64
        finally:
74
65
            pb.finished()
75
66
 
93
84
            self.assertEqual(u'baz\u1234', password.decode('utf8'))
94
85
            self.assertEqual(u'Hello \u1234 some\u1234: ',
95
86
                             ui.stdout.getvalue().decode('utf8'))
96
 
            # stdin should be empty
97
 
            self.assertEqual('', ui.stdin.readline())
98
87
        finally:
99
88
            pb.finished()
100
89
 
110
99
            self.assertEqual(None, result)
111
100
            self.assertEqual("t\n", stdout.getvalue())
112
101
            # Since there was no update() call, there should be no clear() call
113
 
            self.failIf(re.search(r'^\r {10,}\r$',
114
 
                                  stderr.getvalue()) is not None,
 
102
            self.failIf(re.search(r'^\r {10,}\r$', stderr.getvalue()) is not None,
115
103
                        'We cleared the stderr without anything to put there')
116
104
        finally:
117
105
            pb.finished()
173
161
 
174
162
    def test_text_factory_setting_progress_bar(self):
175
163
        # we should be able to choose the progress bar type used.
176
 
        factory = TextUIFactory(bar_type=DotsProgressBar)
 
164
        factory = bzrlib.ui.text.TextUIFactory(
 
165
            bar_type=DotsProgressBar)
177
166
        bar = factory.nested_progress_bar()
178
167
        bar.finished()
179
168
        self.assertIsInstance(bar, DotsProgressBar)
180
169
 
181
170
    def test_cli_stdin_is_default_stdin(self):
182
 
        factory = CLIUIFactory()
 
171
        factory = bzrlib.ui.CLIUIFactory()
183
172
        self.assertEqual(sys.stdin, factory.stdin)
184
173
 
185
174
    def assert_get_bool_acceptance_of_user_input(self, factory):
186
 
        factory.stdin = StringIO("y\nyes with garbage\n"
187
 
                                 "yes\nn\nnot an answer\n"
188
 
                                 "no\nfoo\n")
 
175
        factory.stdin = StringIO("y\nyes with garbage\nyes\nn\nnot an answer\nno\nfoo\n")
189
176
        factory.stdout = StringIO()
190
177
        # there is no output from the base factory
191
178
        self.assertEqual(True, factory.get_boolean(""))
193
180
        self.assertEqual(False, factory.get_boolean(""))
194
181
        self.assertEqual(False, factory.get_boolean(""))
195
182
        self.assertEqual("foo\n", factory.stdin.read())
196
 
        # stdin should be empty
197
 
        self.assertEqual('', factory.stdin.readline())
198
183
 
199
184
    def test_silent_ui_getbool(self):
200
 
        factory = SilentUIFactory()
 
185
        factory = bzrlib.ui.SilentUIFactory()
201
186
        self.assert_get_bool_acceptance_of_user_input(factory)
202
187
 
203
188
    def test_silent_factory_prompts_silently(self):
204
 
        factory = SilentUIFactory()
 
189
        factory = bzrlib.ui.SilentUIFactory()
205
190
        stdout = StringIO()
206
191
        factory.stdin = StringIO("y\n")
207
 
        self.assertEqual(True,
208
 
                         self.apply_redirected(None, stdout, stdout,
209
 
                                               factory.get_boolean, "foo"))
 
192
        self.assertEqual(
 
193
            True,
 
194
            self.apply_redirected(
 
195
                None, stdout, stdout, factory.get_boolean, "foo")
 
196
            )
210
197
        self.assertEqual("", stdout.getvalue())
211
 
        # stdin should be empty
212
 
        self.assertEqual('', factory.stdin.readline())
213
 
 
 
198
        
214
199
    def test_text_ui_getbool(self):
215
 
        factory = TextUIFactory()
 
200
        factory = bzrlib.ui.text.TextUIFactory()
216
201
        self.assert_get_bool_acceptance_of_user_input(factory)
217
202
 
218
203
    def test_text_factory_prompts_and_clears(self):
219
204
        # a get_boolean call should clear the pb before prompting
220
 
        factory = TextUIFactory(bar_type=DotsProgressBar)
 
205
        factory = bzrlib.ui.text.TextUIFactory(bar_type=DotsProgressBar)
221
206
        factory.stdout = _TTYStringIO()
222
207
        factory.stdin = StringIO("yada\ny\n")
223
 
        pb = self.apply_redirected(factory.stdin, factory.stdout,
224
 
                                   factory.stdout, factory.nested_progress_bar)
 
208
        pb = self.apply_redirected(
 
209
            factory.stdin, factory.stdout, factory.stdout, factory.nested_progress_bar)
225
210
        pb.start_time = None
226
 
        self.apply_redirected(factory.stdin, factory.stdout,
227
 
                              factory.stdout, pb.update, "foo", 0, 1)
228
 
        self.assertEqual(True,
229
 
                         self.apply_redirected(None, factory.stdout,
230
 
                                               factory.stdout,
231
 
                                               factory.get_boolean,
232
 
                                               "what do you want"))
 
211
        self.apply_redirected(
 
212
            factory.stdin, factory.stdout, factory.stdout, pb.update, "foo", 0, 1)
 
213
        self.assertEqual(
 
214
            True,
 
215
            self.apply_redirected(
 
216
                None, factory.stdout, factory.stdout, factory.get_boolean, "what do you want")
 
217
            )
233
218
        output = factory.stdout.getvalue()
234
219
        self.assertEqual("foo: .\n"
235
220
                         "what do you want? [y/n]: what do you want? [y/n]: ",
236
221
                         factory.stdout.getvalue())
237
 
        # stdin should be empty
238
 
        self.assertEqual('', factory.stdin.readline())
239