diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2012-06-05 11:43:22 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2012-06-05 11:43:22 (GMT) |
commit | f86a5e8a93ab293d4cc00a8f2835d6d2cd3baa69 (patch) | |
tree | 9d249e4c06f25885dc668edd529b1a4c802c898a /Lib/test/test_io.py | |
parent | 91c5a34613fb918c79bb372723e10e106ad9a9be (diff) | |
download | cpython-f86a5e8a93ab293d4cc00a8f2835d6d2cd3baa69.zip cpython-f86a5e8a93ab293d4cc00a8f2835d6d2cd3baa69.tar.gz cpython-f86a5e8a93ab293d4cc00a8f2835d6d2cd3baa69.tar.bz2 |
Close #11022: TextIOWrapper doesn't call locale.setlocale() anymore
open() and io.TextIOWrapper are now calling locale.getpreferredencoding(False)
instead of locale.getpreferredencoding() in text mode if the encoding is not
specified. Don't change temporary the locale encoding using locale.setlocale(),
use the current locale encoding instead of the user preferred encoding.
Explain also in open() documentation that locale.getpreferredencoding(False) is
called if the encoding is not specified.
Diffstat (limited to 'Lib/test/test_io.py')
-rw-r--r-- | Lib/test/test_io.py | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py index f5bb732..1951a06 100644 --- a/Lib/test/test_io.py +++ b/Lib/test/test_io.py @@ -19,20 +19,21 @@ # test both implementations. This file has lots of examples. ################################################################################ +import abc +import array +import errno +import locale import os +import pickle +import random +import signal import sys import time -import array -import random import unittest -import weakref -import abc -import signal -import errno import warnings -import pickle -from itertools import cycle, count +import weakref from collections import deque +from itertools import cycle, count from test import support import codecs @@ -1881,6 +1882,24 @@ class TextIOWrapperTest(unittest.TestCase): t.write("A\rB") self.assertEqual(r.getvalue(), b"XY\nZA\rB") + def test_default_encoding(self): + old_environ = dict(os.environ) + try: + # try to get a user preferred encoding different than the current + # locale encoding to check that TextIOWrapper() uses the current + # locale encoding and not the user preferred encoding + for key in ('LC_ALL', 'LANG', 'LC_CTYPE'): + if key in os.environ: + del os.environ[key] + + current_locale_encoding = locale.getpreferredencoding(False) + b = self.BytesIO() + t = self.TextIOWrapper(b) + self.assertEqual(t.encoding, current_locale_encoding) + finally: + os.environ.clear() + os.environ.update(old_environ) + def test_encoding(self): # Check the encoding attribute is always set, and valid b = self.BytesIO() |