]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-128438: Use `EnvironmentVarGuard` in `test_zoneinfo.py` (#131870)
authorWulian233 <1055917385@qq.com>
Sun, 27 Apr 2025 11:29:37 +0000 (19:29 +0800)
committerGitHub <noreply@github.com>
Sun, 27 Apr 2025 11:29:37 +0000 (13:29 +0200)
Lib/test/test_zoneinfo/test_zoneinfo.py

index fff6c0d865b441c151a4650d7b6d81682d4818aa..b0dbd768cab7e1996ceef91e1e8c76fa83e3c92e 100644 (file)
@@ -18,8 +18,9 @@ from datetime import date, datetime, time, timedelta, timezone
 from functools import cached_property
 
 from test.support import MISSING_C_DOCSTRINGS
+from test.support.os_helper import EnvironmentVarGuard
 from test.test_zoneinfo import _support as test_support
-from test.test_zoneinfo._support import OS_ENV_LOCK, TZPATH_TEST_LOCK, ZoneInfoTestBase
+from test.test_zoneinfo._support import TZPATH_TEST_LOCK, ZoneInfoTestBase
 from test.support.import_helper import import_module, CleanImport
 
 lzma = import_module('lzma')
@@ -1659,24 +1660,9 @@ class TzPathTest(TzPathUserMixin, ZoneInfoTestBase):
     @staticmethod
     @contextlib.contextmanager
     def python_tzpath_context(value):
-        path_var = "PYTHONTZPATH"
-        unset_env_sentinel = object()
-        old_env = unset_env_sentinel
-        try:
-            with OS_ENV_LOCK:
-                old_env = os.environ.get(path_var, None)
-                os.environ[path_var] = value
-                yield
-        finally:
-            if old_env is unset_env_sentinel:
-                # In this case, `old_env` was never retrieved from the
-                # environment for whatever reason, so there's no need to
-                # reset the environment TZPATH.
-                pass
-            elif old_env is None:
-                del os.environ[path_var]
-            else:
-                os.environ[path_var] = old_env  # pragma: nocover
+        with EnvironmentVarGuard() as env:
+            env["PYTHONTZPATH"] = value
+            yield
 
     def test_env_variable(self):
         """Tests that the environment variable works with reset_tzpath."""