https://github.com/python/cpython/commit/ae7f621c33c854334c69cf97260c7516170dcf0d
commit: ae7f621c33c854334c69cf97260c7516170dcf0d
branch: main
author: Yan Yanchii <[email protected]>
committer: picnixz <[email protected]>
date: 2025-01-15T10:38:43+01:00
summary:
gh-128438: Use `EnvironmentVarGuard` for `test_{builtin,io,locale}.py` (#128476)
Modifying locale-related environment variables in `Lib/test/test_builtin.py`,
`Lib/test/test_io.py` and `Lib/test/test_locale.py` is now achieved by using
an `EnvironmentVarGuard` context instead of an explicit `try-finally` block.
files:
M Lib/test/test_builtin.py
M Lib/test/test_io.py
M Lib/test/test_locale.py
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index 5f4eac5267622f..73b139e405ae59 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -1567,14 +1567,12 @@ def test_open(self):
@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()
@@ -1583,9 +1581,6 @@ def test_open_default_encoding(self):
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):
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
index 33e0161241e87e..8c79d2c24a140a 100644
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -2892,14 +2892,12 @@ def test_reconfigure_line_buffering(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()
@@ -2907,9 +2905,6 @@ def test_default_encoding(self):
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
diff --git a/Lib/test/test_locale.py b/Lib/test/test_locale.py
index 00e93d8e78443d..c025ed4108fb58 100644
--- a/Lib/test/test_locale.py
+++ b/Lib/test/test_locale.py
@@ -1,5 +1,5 @@
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
@@ -499,25 +499,16 @@ def test_defaults_UTF8(self):
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
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]