~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_osutils_encodings.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-12-02 14:58:47 UTC
  • mfrom: (5554.1.3 trunk)
  • Revision ID: pqm@pqm.ubuntu.com-20101202145847-fw822sd3nyhvrwmi
(vila) Merge 2.2 into trunk including fix for bug #583667 and bug
        #681885 (Vincent Ladeuil)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2012, 2016 Canonical Ltd
 
1
# Copyright (C) 2006-2010 Canonical Ltd
2
2
#
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
18
18
 
19
19
import codecs
20
20
import locale
 
21
import os
21
22
import sys
22
23
 
23
24
from bzrlib import (
 
25
    errors,
24
26
    osutils,
25
27
    )
26
28
from bzrlib.tests import (
72
74
    """Test the auto-detection of proper terminal encoding."""
73
75
 
74
76
    def setUp(self):
75
 
        super(TestTerminalEncoding, self).setUp()
 
77
        TestCase.setUp(self)
76
78
        self.overrideAttr(sys, 'stdin')
77
79
        self.overrideAttr(sys, 'stdout')
78
80
        self.overrideAttr(sys, 'stderr')
144
146
        self.assertEqual('latin-1', osutils.get_terminal_encoding())
145
147
 
146
148
        # check stderr
147
 
        self.assertEqual('', sys.stderr.getvalue())
 
149
        self.assertEquals('', sys.stderr.getvalue())
148
150
 
149
151
    def test_terminal_cp_unknown(self):
150
152
        # test against really unknown encoding
158
160
        self.assertEqual('latin-1', osutils.get_terminal_encoding())
159
161
 
160
162
        # check stderr
161
 
        self.assertEqual('bzr: warning: unknown terminal encoding cp-unknown.\n'
 
163
        self.assertEquals('bzr: warning: unknown terminal encoding cp-unknown.\n'
162
164
                          '  Using encoding latin-1 instead.\n',
163
165
                          sys.stderr.getvalue())
164
166
 
167
169
    """Test detection of default user encoding."""
168
170
 
169
171
    def setUp(self):
170
 
        super(TestUserEncoding, self).setUp()
171
 
        self.overrideAttr(osutils, '_cached_user_encoding', None)
172
 
        self.overrideAttr(locale, 'getpreferredencoding', self.get_encoding)
173
 
        self.overrideAttr(locale, 'CODESET', None)
 
172
        TestCase.setUp(self)
 
173
        self.overrideAttr(locale, 'getpreferredencoding')
 
174
        self.addCleanup(osutils.set_or_unset_env,
 
175
                        'LANG', os.environ.get('LANG'))
174
176
        self.overrideAttr(sys, 'stderr', StringIOWrapper())
175
177
 
176
 
    def get_encoding(self, do_setlocale=True):
177
 
        return self._encoding
178
 
 
179
178
    def test_get_user_encoding(self):
180
 
        self._encoding = 'user_encoding'
 
179
        def f():
 
180
            return 'user_encoding'
 
181
 
 
182
        locale.getpreferredencoding = f
181
183
        fake_codec.add('user_encoding')
182
 
        self.assertEqual('iso8859-1', # fake_codec maps to latin-1
183
 
                          osutils.get_user_encoding())
184
 
        self.assertEqual('', sys.stderr.getvalue())
 
184
        self.assertEquals('user_encoding', osutils.get_user_encoding(use_cache=False))
 
185
        self.assertEquals('', sys.stderr.getvalue())
185
186
 
186
187
    def test_user_cp0(self):
187
 
        self._encoding = 'cp0'
188
 
        self.assertEqual('ascii', osutils.get_user_encoding())
189
 
        self.assertEqual('', sys.stderr.getvalue())
 
188
        def f():
 
189
            return 'cp0'
 
190
 
 
191
        locale.getpreferredencoding = f
 
192
        self.assertEquals('ascii', osutils.get_user_encoding(use_cache=False))
 
193
        self.assertEquals('', sys.stderr.getvalue())
190
194
 
191
195
    def test_user_cp_unknown(self):
192
 
        self._encoding = 'cp-unknown'
193
 
        self.assertEqual('ascii', osutils.get_user_encoding())
194
 
        self.assertEqual('bzr: warning: unknown encoding cp-unknown.'
 
196
        def f():
 
197
            return 'cp-unknown'
 
198
 
 
199
        locale.getpreferredencoding = f
 
200
        self.assertEquals('ascii', osutils.get_user_encoding(use_cache=False))
 
201
        self.assertEquals('bzr: warning: unknown encoding cp-unknown.'
195
202
                          ' Continuing with ascii encoding.\n',
196
203
                          sys.stderr.getvalue())
197
204
 
198
205
    def test_user_empty(self):
199
206
        """Running bzr from a vim script gives '' for a preferred locale"""
200
 
        self._encoding = ''
201
 
        self.assertEqual('ascii', osutils.get_user_encoding())
202
 
        self.assertEqual('', sys.stderr.getvalue())
 
207
        def f():
 
208
            return ''
 
209
 
 
210
        locale.getpreferredencoding = f
 
211
        self.assertEquals('ascii', osutils.get_user_encoding(use_cache=False))
 
212
        self.assertEquals('', sys.stderr.getvalue())
 
213
 
 
214
    def test_user_locale_error(self):
 
215
        def f():
 
216
            raise locale.Error, 'unsupported locale'
 
217
 
 
218
        locale.getpreferredencoding = f
 
219
        os.environ['LANG'] = 'BOGUS'
 
220
        self.assertEquals('ascii', osutils.get_user_encoding(use_cache=False))
 
221
        self.assertEquals('bzr: warning: unsupported locale\n'
 
222
                          '  Could not determine what text encoding to use.\n'
 
223
                          '  This error usually means your Python interpreter\n'
 
224
                          '  doesn\'t support the locale set by $LANG (BOGUS)\n'
 
225
                          '  Continuing with ascii encoding.\n',
 
226
                          sys.stderr.getvalue())