~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

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

  • Committer: Martin Pool
  • Date: 2009-03-24 05:21:02 UTC
  • mfrom: (4192 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4202.
  • Revision ID: mbp@sourcefrog.net-20090324052102-8kk087b32tep3d9h
merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
import os
21
21
 
22
22
from bzrlib import osutils, urlutils
23
 
import bzrlib
24
 
from bzrlib.tests import TestCaseWithTransport, TestSkipped
 
23
from bzrlib.tests import (
 
24
    TestCaseWithTransport,
 
25
    TestSkipped,
 
26
    multiply_tests,
 
27
    )
 
28
from bzrlib.tests.EncodingAdapter import encoding_scenarios
25
29
from bzrlib.trace import mutter, note
26
30
 
27
31
 
 
32
def load_tests(standard_tests, module, loader):
 
33
    return multiply_tests(standard_tests, encoding_scenarios,
 
34
        loader.suiteClass())
 
35
 
 
36
 
28
37
class TestNonAscii(TestCaseWithTransport):
29
38
    """Test that bzr handles files/committers/etc which are non-ascii."""
30
39
 
31
40
    def setUp(self):
32
41
        super(TestNonAscii, self).setUp()
33
42
        self._orig_email = os.environ.get('BZR_EMAIL', None)
34
 
        self._orig_encoding = bzrlib.user_encoding
 
43
        self._orig_encoding = osutils._cached_user_encoding
35
44
 
36
 
        bzrlib.user_encoding = self.encoding
 
45
        osutils._cached_user_encoding = self.encoding
37
46
        email = self.info['committer'] + ' <joe@foo.com>'
38
 
        os.environ['BZR_EMAIL'] = email.encode(bzrlib.user_encoding)
 
47
        os.environ['BZR_EMAIL'] = email.encode(osutils.get_user_encoding())
39
48
        self.create_base()
40
49
 
41
50
    def tearDown(self):
44
53
        else:
45
54
            if os.environ.get('BZR_EMAIL', None) is not None:
46
55
                del os.environ['BZR_EMAIL']
47
 
        bzrlib.user_encoding = self._orig_encoding
 
56
        osutils._cached_user_encoding = self._orig_encoding
48
57
        super(TestNonAscii, self).tearDown()
49
58
 
50
59
    def run_bzr_decode(self, args, encoding=None, fail=False, retcode=None,
53
62
 
54
63
        Returns a string containing the stdout output from bzr.
55
64
 
56
 
        :param fail: If true, the operation is expected to fail with 
 
65
        :param fail: If true, the operation is expected to fail with
57
66
            a UnicodeError.
58
67
        """
59
68
        if encoding is None:
60
 
            encoding = bzrlib.user_encoding
 
69
            encoding = osutils.get_user_encoding()
61
70
        try:
62
71
            out = self.run_bzr(args, output_encoding=encoding, encoding=encoding,
63
72
                retcode=retcode, working_dir=working_dir)[0]
235
244
        txt = self.run_bzr_decode('pull', working_dir=dirname2)
236
245
 
237
246
        expected = osutils.pathjoin(osutils.getcwd(), dirname1)
238
 
        self.assertEqual(u'Using saved location: %s/\n'
 
247
        self.assertEqual(u'Using saved parent location: %s/\n'
239
248
                'No revisions to pull.\n' % (expected,), txt)
240
249
 
241
250
        self.build_tree_contents(
299
308
        fname = self.info['filename']
300
309
        txt = self.run_bzr_decode(['file-id', fname])
301
310
 
302
 
        # TODO: jam 20060106 We don't support non-ascii file ids yet, 
 
311
        # TODO: jam 20060106 We don't support non-ascii file ids yet,
303
312
        #       so there is nothing which would fail in ascii encoding
304
313
        #       This *should* be retcode=3
305
314
        txt = self.run_bzr_decode(['file-id', fname], encoding='ascii')
319
328
 
320
329
        txt = self.run_bzr_decode(['file-path', path])
321
330
 
322
 
        # TODO: jam 20060106 We don't support non-ascii file ids yet, 
 
331
        # TODO: jam 20060106 We don't support non-ascii file ids yet,
323
332
        #       so there is nothing which would fail in ascii encoding
324
333
        #       This *should* be retcode=3
325
334
        txt = self.run_bzr_decode(['file-path', path], encoding='ascii')
326
335
 
327
336
    def test_revision_history(self):
328
 
        # TODO: jam 20060106 We don't support non-ascii revision ids yet, 
 
337
        # TODO: jam 20060106 We don't support non-ascii revision ids yet,
329
338
        #       so there is nothing which would fail in ascii encoding
330
339
        txt = self.run_bzr_decode('revision-history')
331
340
 
332
341
    def test_ancestry(self):
333
 
        # TODO: jam 20060106 We don't support non-ascii revision ids yet, 
 
342
        # TODO: jam 20060106 We don't support non-ascii revision ids yet,
334
343
        #       so there is nothing which would fail in ascii encoding
335
344
        txt = self.run_bzr_decode('ancestry')
336
345
 
337
346
    def test_diff(self):
338
 
        # TODO: jam 20060106 diff is a difficult one to test, because it 
 
347
        # TODO: jam 20060106 diff is a difficult one to test, because it
339
348
        #       shouldn't encode the file contents, but it needs some sort
340
349
        #       of encoding for the paths, etc which are displayed.
341
350
        self.build_tree_contents([(self.info['filename'], 'newline\n')])
362
371
        self.build_tree_contents([(fname, 'modified\n')])
363
372
 
364
373
        txt = self.run_bzr_decode('modified')
365
 
        self.assertEqual(fname+'\n', txt)
 
374
        self.assertEqual('"'+fname+'"'+'\n', txt)
366
375
 
367
376
        self.run_bzr_decode('modified', encoding='ascii', fail=True)
368
377
 
372
381
        self.wt.add(fname)
373
382
 
374
383
        txt = self.run_bzr_decode('added')
375
 
        self.assertEqual(fname+'\n', txt)
 
384
        self.assertEqual('"'+fname+'"'+'\n', txt)
376
385
 
377
386
        self.run_bzr_decode('added', encoding='ascii', fail=True)
378
387
 
414
423
        self.wt.commit(u'Renamed %s => %s' % (fname, fname2))
415
424
 
416
425
        txt = self.run_bzr_decode(['touching-revisions', fname2])
417
 
        expected_txt = (u'     3 added %s\n' 
 
426
        expected_txt = (u'     3 added %s\n'
418
427
                        u'     4 renamed %s => %s\n'
419
428
                        % (fname, fname, fname2))
420
429
        self.assertEqual(expected_txt, txt)
437
446
        fname = self.info['filename'] + '2'
438
447
        self.build_tree_contents([(fname, 'unknown\n')])
439
448
 
440
 
        # TODO: jam 20060112 bzr unknowns is the only one which 
 
449
        # TODO: jam 20060112 bzr unknowns is the only one which
441
450
        #       quotes paths do we really want it to?
 
451
        #       awilkins 20080521 added and modified do it now as well
442
452
        txt = self.run_bzr_decode('unknowns')
443
453
        self.assertEqual(u'"%s"\n' % (fname,), txt)
444
454