@unittest.skipIf(sys.flags.utf8_mode, "utf-8 mode is enabled")
def test_open_default_encoding(self):
- old_environ = dict(os.environ)
- try:
+ with EnvironmentVarGuard() as env:
# try to get a user preferred encoding different than the current
# locale encoding to check that open() 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]
+ env.unset(key)
self.write_testfile()
current_locale_encoding = locale.getencoding()
fp = open(TESTFN, 'w')
with fp:
self.assertEqual(fp.encoding, current_locale_encoding)
- finally:
- os.environ.clear()
- os.environ.update(old_environ)
@support.requires_subprocess()
def test_open_non_inheritable(self):
@unittest.skipIf(sys.flags.utf8_mode, "utf-8 mode is enabled")
def test_default_encoding(self):
- old_environ = dict(os.environ)
- try:
+ with os_helper.EnvironmentVarGuard() as env:
# 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]
+ env.unset(key)
current_locale_encoding = locale.getencoding()
b = self.BytesIO()
warnings.simplefilter("ignore", EncodingWarning)
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
from decimal import Decimal
-from test.support import verbose, is_android, is_emscripten, is_wasi
+from test.support import verbose, is_android, is_emscripten, is_wasi, os_helper
from test.support.warnings_helper import check_warnings
from test.support.import_helper import import_fresh_module
from unittest import mock
else:
orig_getlocale = None
- orig_env = {}
try:
- for key in ('LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE'):
- if key in os.environ:
- orig_env[key] = os.environ[key]
- del os.environ[key]
+ with os_helper.EnvironmentVarGuard() as env:
+ for key in ('LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE'):
+ env.unset(key)
- os.environ['LC_CTYPE'] = 'UTF-8'
-
- with check_warnings(('', DeprecationWarning)):
- self.assertEqual(locale.getdefaultlocale(), (None, 'UTF-8'))
+ env.set('LC_CTYPE', 'UTF-8')
+ with check_warnings(('', DeprecationWarning)):
+ self.assertEqual(locale.getdefaultlocale(), (None, 'UTF-8'))
finally:
- for k in orig_env:
- os.environ[k] = orig_env[k]
-
- if 'LC_CTYPE' not in orig_env:
- del os.environ['LC_CTYPE']
-
if orig_getlocale is not None:
_locale._getdefaultlocale = orig_getlocale