26
26
from bzrlib.errors import BzrBadParameterNotUnicode, InvalidURL
27
27
import bzrlib.osutils as osutils
28
from bzrlib.tests import (
28
from bzrlib.tests import TestCaseInTempDir, TestCase, TestSkipped
36
31
class TestOSUtils(TestCaseInTempDir):
347
342
self.assertEqual(
348
343
dir_sorted_paths,
349
344
sorted(original_paths, cmp=osutils.compare_paths_prefix_order))
352
class TestTerminalEncoding(TestCase):
353
"""Test the auto-detection of proper terminal encoding."""
356
self._stdout = sys.stdout
357
self._stderr = sys.stderr
358
self._stdin = sys.stdin
359
self._user_encoding = bzrlib.user_encoding
361
self.addCleanup(self._reset)
363
sys.stdout = StringIOWrapper()
364
sys.stdout.encoding = 'stdout_encoding'
365
sys.stderr = StringIOWrapper()
366
sys.stderr.encoding = 'stderr_encoding'
367
sys.stdin = StringIOWrapper()
368
sys.stdin.encoding = 'stdin_encoding'
369
bzrlib.user_encoding = 'user_encoding'
372
sys.stdout = self._stdout
373
sys.stderr = self._stderr
374
sys.stdin = self._stdin
375
bzrlib.user_encoding = self._user_encoding
377
def test_get_terminal_encoding(self):
378
# first preference is stdout encoding
379
self.assertEqual('stdout_encoding', osutils.get_terminal_encoding())
381
sys.stdout.encoding = None
382
# if sys.stdout is None, fall back to sys.stdin
383
self.assertEqual('stdin_encoding', osutils.get_terminal_encoding())
385
sys.stdin.encoding = None
386
# and in the worst case, use bzrlib.user_encoding
387
self.assertEqual('user_encoding', osutils.get_terminal_encoding())