1
# Copyright (C) 2006-2011 Canonical Ltd
1
# Copyright (C) 2006-2012, 2016 Canonical Ltd
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
85
88
user_encoding='user_encoding',
86
89
enable_fake_encodings=True):
87
sys.stdout = StringIOWrapper()
90
sys.stdout = StringIOWithEncoding()
88
91
sys.stdout.encoding = stdout_encoding
89
sys.stderr = StringIOWrapper()
92
sys.stderr = StringIOWithEncoding()
90
93
sys.stderr.encoding = stderr_encoding
91
sys.stdin = StringIOWrapper()
94
sys.stdin = StringIOWithEncoding()
92
95
sys.stdin.encoding = stdin_encoding
93
96
osutils._cached_user_encoding = user_encoding
94
97
if enable_fake_encodings:
144
147
self.assertEqual('latin-1', osutils.get_terminal_encoding())
147
self.assertEquals('', sys.stderr.getvalue())
150
self.assertEqual('', sys.stderr.getvalue())
149
152
def test_terminal_cp_unknown(self):
150
153
# test against really unknown encoding
158
161
self.assertEqual('latin-1', osutils.get_terminal_encoding())
161
self.assertEquals('bzr: warning: unknown terminal encoding cp-unknown.\n'
162
' Using encoding latin-1 instead.\n',
163
sys.stderr.getvalue())
164
self.assertEqual('brz: warning: unknown terminal encoding cp-unknown.\n'
165
' Using encoding latin-1 instead.\n',
166
sys.stderr.getvalue())
166
169
class TestUserEncoding(TestCase):
171
174
self.overrideAttr(osutils, '_cached_user_encoding', None)
172
175
self.overrideAttr(locale, 'getpreferredencoding', self.get_encoding)
173
176
self.overrideAttr(locale, 'CODESET', None)
174
self.overrideAttr(sys, 'stderr', StringIOWrapper())
177
self.overrideAttr(sys, 'stderr', StringIOWithEncoding())
176
179
def get_encoding(self, do_setlocale=True):
177
180
return self._encoding
179
182
def test_get_user_encoding(self):
180
183
self._encoding = 'user_encoding'
181
184
fake_codec.add('user_encoding')
182
self.assertEquals('iso8859-1', # fake_codec maps to latin-1
183
osutils.get_user_encoding())
184
self.assertEquals('', sys.stderr.getvalue())
185
self.assertEqual('iso8859-1', # fake_codec maps to latin-1
186
osutils.get_user_encoding())
187
self.assertEqual('', sys.stderr.getvalue())
186
189
def test_user_cp0(self):
187
190
self._encoding = 'cp0'
188
self.assertEquals('ascii', osutils.get_user_encoding())
189
self.assertEquals('', sys.stderr.getvalue())
191
self.assertEqual('ascii', osutils.get_user_encoding())
192
self.assertEqual('', sys.stderr.getvalue())
191
194
def test_user_cp_unknown(self):
192
195
self._encoding = 'cp-unknown'
193
self.assertEquals('ascii', osutils.get_user_encoding())
194
self.assertEquals('bzr: warning: unknown encoding cp-unknown.'
195
' Continuing with ascii encoding.\n',
196
sys.stderr.getvalue())
196
self.assertEqual('ascii', osutils.get_user_encoding())
197
self.assertEqual('brz: warning: unknown encoding cp-unknown.'
198
' Continuing with ascii encoding.\n',
199
sys.stderr.getvalue())
198
201
def test_user_empty(self):
199
202
"""Running bzr from a vim script gives '' for a preferred locale"""
200
203
self._encoding = ''
201
self.assertEquals('ascii', osutils.get_user_encoding())
202
self.assertEquals('', sys.stderr.getvalue())
204
self.assertEqual('ascii', osutils.get_user_encoding())
205
self.assertEqual('', sys.stderr.getvalue())