~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_osutils_encodings.py

  • Committer: Tarmac
  • Author(s): Vincent Ladeuil
  • Date: 2017-01-30 14:42:05 UTC
  • mfrom: (6620.1.1 trunk)
  • Revision ID: tarmac-20170130144205-r8fh2xpmiuxyozpv
Merge  2.7 into trunk including fix for bug #1657238 [r=vila]

Show diffs side-by-side

added added

removed removed

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