Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d598ecb

Browse files
committed
TST: Ensure test_webagg subprocess is terminated
If the final communication times out or asserts, there is nothing to enforce that the subprocess is killed.
1 parent 7dcc416 commit d598ecb

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

lib/matplotlib/tests/test_backends_interactive.py

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -477,24 +477,27 @@ def test_webagg():
477477
inspect.getsource(_test_interactive_impl)
478478
+ "\n_test_interactive_impl()", "{}"],
479479
env={**os.environ, "MPLBACKEND": "webagg", "SOURCE_DATE_EPOCH": "0"})
480-
url = "http://{}:{}".format(
481-
mpl.rcParams["webagg.address"], mpl.rcParams["webagg.port"])
480+
url = f'http://{mpl.rcParams["webagg.address"]}:{mpl.rcParams["webagg.port"]}'
482481
timeout = time.perf_counter() + _test_timeout
483-
while True:
484-
try:
485-
retcode = proc.poll()
486-
# check that the subprocess for the server is not dead
487-
assert retcode is None
488-
conn = urllib.request.urlopen(url)
489-
break
490-
except urllib.error.URLError:
491-
if time.perf_counter() > timeout:
492-
pytest.fail("Failed to connect to the webagg server.")
493-
else:
494-
continue
495-
conn.close()
496-
proc.send_signal(signal.SIGINT)
497-
assert proc.wait(timeout=_test_timeout) == 0
482+
try:
483+
while True:
484+
try:
485+
retcode = proc.poll()
486+
# check that the subprocess for the server is not dead
487+
assert retcode is None
488+
conn = urllib.request.urlopen(url)
489+
break
490+
except urllib.error.URLError:
491+
if time.perf_counter() > timeout:
492+
pytest.fail("Failed to connect to the webagg server.")
493+
else:
494+
continue
495+
conn.close()
496+
proc.send_signal(signal.SIGINT)
497+
assert proc.wait(timeout=_test_timeout) == 0
498+
finally:
499+
if proc.poll() is None:
500+
proc.kill()
498501

499502

500503
def _lazy_headless():

0 commit comments

Comments
 (0)