Switch to use TemporaryDirectory

This commit is contained in:
richardpaulhudson 2022-10-04 16:59:12 +02:00
parent c8b7912bf6
commit 786473d827

View File

@ -1,5 +1,7 @@
import os import os
from time import time from time import time
from tempfile import TemporaryDirectory
from pathlib import Path
import pytest import pytest
import srsly import srsly
from spacy.cli._util import load_project_config from spacy.cli._util import load_project_config
@ -218,8 +220,8 @@ def test_project_run_multiprocessing_failure(failing_command: str):
with a non-zero return code, the other two commands after several seconds with with a non-zero return code, the other two commands after several seconds with
zero return codes. Measuring the execution length for the whole group shows zero return codes. Measuring the execution length for the whole group shows
whether or not the sleeping processes were successfully terminated.""" whether or not the sleeping processes were successfully terminated."""
try: with TemporaryDirectory(ignore_cleanup_errors=True) as d: # avoid errors in Windows CI
with make_tempdir() as d: dirpath = Path(d)
pscript = """ pscript = """
import sys import sys
@ -256,11 +258,11 @@ sys.exit(int(rc))
] ]
}, },
} }
srsly.write_yaml(d / "project.yml", project) srsly.write_yaml(dirpath / "project.yml", project)
load_project_config(d) load_project_config(dirpath)
start = time() start = time()
with pytest.raises(SystemExit) as rc_e: with pytest.raises(SystemExit) as rc_e:
project_run(d, "all") project_run(dirpath, "all")
if os.name == "nt": if os.name == "nt":
# because in Windows the terminated process has rc=15 rather than rc=-15, # because in Windows the terminated process has rc=15 rather than rc=-15,
# 15 is the highest rc rather than 1. # 15 is the highest rc rather than 1.
@ -271,6 +273,3 @@ sys.exit(int(rc))
assert ( assert (
time_taken < 15 time_taken < 15
), "Test took {time_taken}, subprocess seems not to have been terminated" ), "Test took {time_taken}, subprocess seems not to have been terminated"
except PermissionError: # occurs on Windows in the CI because the terminated subprocess still has
# a handle on the temporary directory
pass