Fixed an issue where getpass.getuser() contained illegal characters for file directories (#8365)

* retry writing pytest-of dir when invalid chars are in directory name

* add unit tests for getbasetemp() and changelog

* patch _basetemp & _given_basetemp for testing basetemp()

* Tweak changelog for #8317, tidy up comments
This commit is contained in:
Simon K
2021-02-25 08:28:57 +00:00
committed by GitHub
parent bbea18d7f9
commit b7f2d7ca61
3 changed files with 19 additions and 1 deletions

View File

@@ -115,7 +115,12 @@ class TempPathFactory:
# use a sub-directory in the temproot to speed-up
# make_numbered_dir() call
rootdir = temproot.joinpath(f"pytest-of-{user}")
rootdir.mkdir(exist_ok=True)
try:
rootdir.mkdir(exist_ok=True)
except OSError:
# getuser() likely returned illegal characters for the platform, use unknown back off mechanism
rootdir = temproot.joinpath("pytest-of-unknown")
rootdir.mkdir(exist_ok=True)
basetemp = make_numbered_dir_with_cleanup(
prefix="pytest-", root=rootdir, keep=3, lock_timeout=LOCK_TIMEOUT
)