170
170
TestCase.setUp(self)
171
self.overrideAttr(osutils, '_cached_user_encoding', None)
172
self.overrideAttr(locale, 'getpreferredencoding', self.get_encoding)
173
self.overrideAttr(locale, 'CODESET', None)
171
self.overrideAttr(locale, 'getpreferredencoding')
174
172
self.overrideAttr(sys, 'stderr', StringIOWrapper())
176
def get_encoding(self, do_setlocale=True):
177
return self._encoding
179
174
def test_get_user_encoding(self):
180
self._encoding = 'user_encoding'
176
return 'user_encoding'
178
locale.getpreferredencoding = f
181
179
fake_codec.add('user_encoding')
182
self.assertEquals('iso8859-1', # fake_codec maps to latin-1
183
osutils.get_user_encoding())
180
self.assertEquals('user_encoding',
181
osutils.get_user_encoding(use_cache=False))
184
182
self.assertEquals('', sys.stderr.getvalue())
186
184
def test_user_cp0(self):
187
self._encoding = 'cp0'
188
self.assertEquals('ascii', osutils.get_user_encoding())
188
locale.getpreferredencoding = f
189
self.assertEquals('ascii', osutils.get_user_encoding(use_cache=False))
189
190
self.assertEquals('', sys.stderr.getvalue())
191
192
def test_user_cp_unknown(self):
192
self._encoding = 'cp-unknown'
193
self.assertEquals('ascii', osutils.get_user_encoding())
196
locale.getpreferredencoding = f
197
self.assertEquals('ascii', osutils.get_user_encoding(use_cache=False))
194
198
self.assertEquals('bzr: warning: unknown encoding cp-unknown.'
195
199
' Continuing with ascii encoding.\n',
196
200
sys.stderr.getvalue())
198
202
def test_user_empty(self):
199
203
"""Running bzr from a vim script gives '' for a preferred locale"""
201
self.assertEquals('ascii', osutils.get_user_encoding())
207
locale.getpreferredencoding = f
208
self.assertEquals('ascii', osutils.get_user_encoding(use_cache=False))
202
209
self.assertEquals('', sys.stderr.getvalue())
211
def test_user_locale_error(self):
213
raise locale.Error, 'unsupported locale'
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())