mirror of
https://github.com/python/cpython.git
synced 2026-01-06 23:42:34 +00:00
GH-102537: Handle check for PYTHONTZPATH failing in zoneinfo test (GH-102538)
It is possible but unlikely for the `python_tzpath_context` function to fail between the start of the `try` block and the point where `os.environ.get` succeeds, in which case `old_env` will be undefined. In this case, we want to take no action. Practically speaking this will really only happen in an error condition anyway, so it doesn't really matter, but we should probably do it right anyway.
This commit is contained in:
parent
53dceb53ad
commit
64bde502cf
2 changed files with 10 additions and 1 deletions
|
|
@ -1543,13 +1543,20 @@ class TzPathTest(TzPathUserMixin, ZoneInfoTestBase):
|
|||
@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 None:
|
||||
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
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
Adjust the error handling strategy in
|
||||
``test_zoneinfo.TzPathTest.python_tzpath_context``. Patch by Paul Ganssle.
|
||||
Loading…
Add table
Add a link
Reference in a new issue