85
89
user_encoding='user_encoding',
86
90
enable_fake_encodings=True):
87
sys.stdout = BytesIOWithEncoding()
92
sys.stdout = StringIOWithEncoding()
94
sys.stdout = BytesIOWithEncoding()
88
95
sys.stdout.encoding = stdout_encoding
89
sys.stderr = BytesIOWithEncoding()
97
sys.stderr = StringIOWithEncoding()
99
sys.stderr = BytesIOWithEncoding()
90
100
sys.stderr.encoding = stderr_encoding
91
sys.stdin = BytesIOWithEncoding()
102
sys.stdin = StringIOWithEncoding()
104
sys.stdin = BytesIOWithEncoding()
92
105
sys.stdin.encoding = stdin_encoding
93
106
osutils._cached_user_encoding = user_encoding
94
107
if enable_fake_encodings:
171
184
self.overrideAttr(osutils, '_cached_user_encoding', None)
172
185
self.overrideAttr(locale, 'getpreferredencoding', self.get_encoding)
173
186
self.overrideAttr(locale, 'CODESET', None)
174
self.overrideAttr(sys, 'stderr', BytesIOWithEncoding())
188
self.overrideAttr(sys, 'stderr', StringIOWithEncoding())
190
self.overrideAttr(sys, 'stderr', BytesIOWithEncoding())
176
192
def get_encoding(self, do_setlocale=True):
177
193
return self._encoding
181
197
fake_codec.add('user_encoding')
182
198
self.assertEqual('iso8859-1', # fake_codec maps to latin-1
183
199
osutils.get_user_encoding())
184
self.assertEqual(b'', sys.stderr.getvalue())
200
self.assertEqual('', sys.stderr.getvalue())
186
202
def test_user_cp0(self):
187
203
self._encoding = 'cp0'
188
204
self.assertEqual('ascii', osutils.get_user_encoding())
189
self.assertEqual(b'', sys.stderr.getvalue())
205
self.assertEqual('', sys.stderr.getvalue())
191
207
def test_user_cp_unknown(self):
192
208
self._encoding = 'cp-unknown'
193
209
self.assertEqual('ascii', osutils.get_user_encoding())
194
self.assertEqual(b'brz: warning: unknown encoding cp-unknown.'
195
b' Continuing with ascii encoding.\n',
196
sys.stderr.getvalue())
210
self.assertEqual('brz: warning: unknown encoding cp-unknown.'
211
' Continuing with ascii encoding.\n',
212
sys.stderr.getvalue())
198
214
def test_user_empty(self):
199
215
"""Running bzr from a vim script gives '' for a preferred locale"""
200
216
self._encoding = ''
201
217
self.assertEqual('ascii', osutils.get_user_encoding())
202
self.assertEqual(b'', sys.stderr.getvalue())
218
self.assertEqual('', sys.stderr.getvalue())