~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_non_ascii.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-10-02 07:48:20 UTC
  • mfrom: (2830.2.12 test-traceback)
  • Revision ID: pqm@pqm.ubuntu.com-20071002074820-0o6n138uq5uh7snb
If an internal error happens in a test, don't turn it into a return code plus traceback but rather let it run up and be seen as a test error (mbp)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006 Canonical Ltd
2
 
# -*- coding: utf-8 -*-
 
1
# Copyright (C) 2006, 2007 Canonical Ltd
3
2
#
4
3
# This program is free software; you can redistribute it and/or modify
5
4
# it under the terms of the GNU General Public License as published by
48
47
        bzrlib.user_encoding = self._orig_encoding
49
48
        super(TestNonAscii, self).tearDown()
50
49
 
 
50
    def run_bzr_decode(self, args, encoding=None, fail=False, retcode=None):
 
51
        """Run bzr and decode the output into a particular encoding.
 
52
 
 
53
        Returns a string containing the stdout output from bzr.
 
54
 
 
55
        :param fail: If true, the operation is expected to fail with 
 
56
            a UnicodeError.
 
57
        """
 
58
        if encoding is None:
 
59
            encoding = bzrlib.user_encoding
 
60
        try:
 
61
            out = self.run_bzr(args, output_encoding=encoding, encoding=encoding,
 
62
                retcode=retcode)[0]
 
63
            return out.decode(encoding)
 
64
        except UnicodeError, e:
 
65
            if not fail:
 
66
                raise
 
67
        else:
 
68
            # This command, run from the regular command line, will give a
 
69
            # traceback to the user.  That's not really good for a situation
 
70
            # that can be provoked just by the interaction of their input data
 
71
            # and locale, as some of these are.  What would be better?
 
72
            if fail:
 
73
                self.fail("Expected UnicodeError not raised")
 
74
 
51
75
    def create_base(self):
52
 
        bzr = self.run_bzr
53
 
 
54
76
        fs_enc = sys.getfilesystemencoding()
55
77
        terminal_enc = osutils.get_terminal_encoding()
56
78
        fname = self.info['filename']
86
108
        self.wt = wt
87
109
 
88
110
    def test_status(self):
89
 
        bzr = self.run_bzr_decode
90
 
 
91
111
        open(self.info['filename'], 'ab').write('added something\n')
92
 
        txt = bzr('status')
 
112
        txt = self.run_bzr_decode('status')
93
113
        self.assertEqual(u'modified:\n  %s\n' % (self.info['filename'],), txt)
94
114
 
95
 
        txt = bzr('status', encoding='ascii')
 
115
        txt = self.run_bzr_decode('status', encoding='ascii')
96
116
        expected = u'modified:\n  %s\n' % (
97
117
                    self.info['filename'].encode('ascii', 'replace'),)
98
118
        self.assertEqual(expected, txt)
136
156
        txt = bzr(['relpath', self.info['filename']])
137
157
        self.assertEqual(self.info['filename'] + '\n', txt)
138
158
 
139
 
        bzr(['relpath', self.info['filename']], encoding='ascii', retcode=3)
 
159
        bzr(['relpath', self.info['filename']], encoding='ascii', fail=True)
140
160
 
141
161
    def test_inventory(self):
142
162
        bzr = self.run_bzr_decode
146
166
                         txt.splitlines())
147
167
 
148
168
        # inventory should fail if unable to encode
149
 
        bzr('inventory', encoding='ascii', retcode=3)
 
169
        bzr('inventory', encoding='ascii', fail=True)
150
170
 
151
171
        # We don't really care about the ids themselves,
152
172
        # but the command shouldn't fail
177
197
        dirname = self.info['directory']
178
198
 
179
199
        # fname1 already exists
180
 
        bzr(['mv', 'a', fname1], retcode=3)
 
200
        bzr(['mv', 'a', fname1], fail=True)
181
201
 
182
202
        txt = bzr(['mv', 'a', fname2])
183
203
        self.assertEqual(u'a => %s\n' % fname2, txt)
285
305
        txt = bzr('renames')
286
306
        self.assertEqual(u'a => %s\n' % fname, txt)
287
307
 
288
 
        bzr('renames', retcode=3, encoding='ascii')
 
308
        bzr('renames', fail=True, encoding='ascii')
289
309
 
290
310
    def test_remove(self):
291
311
        bzr = self.run_bzr_decode
368
388
        # Deleted should fail if cannot decode
369
389
        # Because it is giving the exact paths
370
390
        # which might be used by a front end
371
 
        bzr('deleted', encoding='ascii', retcode=3)
 
391
        bzr('deleted', encoding='ascii', fail=True)
372
392
 
373
393
    def test_modified(self):
374
394
        bzr = self.run_bzr_decode
379
399
        txt = bzr('modified')
380
400
        self.assertEqual(fname+'\n', txt)
381
401
 
382
 
        bzr('modified', encoding='ascii', retcode=3)
 
402
        bzr('modified', encoding='ascii', fail=True)
383
403
 
384
404
    def test_added(self):
385
405
        bzr = self.run_bzr_decode
391
411
        txt = bzr('added')
392
412
        self.assertEqual(fname+'\n', txt)
393
413
 
394
 
        bzr('added', encoding='ascii', retcode=3)
 
414
        bzr('added', encoding='ascii', fail=True)
395
415
 
396
416
    def test_root(self):
397
417
        bzr = self.run_bzr_decode
407
427
        txt = bzr('root')
408
428
        self.failUnless(txt.endswith(dirname+'\n'))
409
429
 
410
 
        txt = bzr('root', encoding='ascii', retcode=3)
 
430
        txt = bzr('root', encoding='ascii', fail=True)
411
431
 
412
432
    def test_log(self):
413
433
        bzr = self.run_bzr_decode
443
463
                        % (fname, fname, fname2))
444
464
        self.assertEqual(expected_txt, txt)
445
465
 
446
 
        bzr(['touching-revisions', fname2], encoding='ascii', retcode=3)
 
466
        bzr(['touching-revisions', fname2], encoding='ascii', fail=True)
447
467
 
448
468
    def test_ls(self):
449
469
        bzr = self.run_bzr_decode
455
475
        self.assertEqual(sorted(['', 'a', 'b', self.info['filename']]),
456
476
                         sorted(txt.split('\0')))
457
477
 
458
 
        txt = bzr('ls', encoding='ascii', retcode=3)
459
 
        txt = bzr('ls --null', encoding='ascii', retcode=3)
 
478
        txt = bzr('ls', encoding='ascii', fail=True)
 
479
        txt = bzr('ls --null', encoding='ascii', fail=True)
460
480
 
461
481
    def test_unknowns(self):
462
482
        bzr = self.run_bzr_decode
469
489
        txt = bzr('unknowns')
470
490
        self.assertEqual(u'"%s"\n' % (fname,), txt)
471
491
 
472
 
        bzr('unknowns', encoding='ascii', retcode=3)
 
492
        bzr('unknowns', encoding='ascii', fail=True)
473
493
 
474
494
    def test_ignore(self):
475
495
        bzr = self.run_bzr_decode