From bcdbb6b677dad6219d9b3956fe957269d65d0542 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Wed, 20 Mar 2019 18:51:53 +0100 Subject: [PATCH] Revisit mkdir/_ensure_supporting_files in cacheprovider - cacheprovider: move call to _ensure_supporting_files This makes it less likely to have a race here (which is not critical), but happened previously probably with xdist, causing flaky coverage with `if not readme_path.is_file():` etc checks in `_ensure_supporting_files`, which has been removed in the `features` branch already. --- src/_pytest/cacheprovider.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/_pytest/cacheprovider.py b/src/_pytest/cacheprovider.py index 0c25914bb..ebba0f935 100755 --- a/src/_pytest/cacheprovider.py +++ b/src/_pytest/cacheprovider.py @@ -121,10 +121,12 @@ class Cache(object): cache_dir_exists_already = True else: cache_dir_exists_already = self._cachedir.exists() - path.parent.mkdir(exist_ok=True, parents=True) + path.parent.mkdir(exist_ok=True, parents=True) except (IOError, OSError): self.warn("could not create cache path {path}", path=path) return + if not cache_dir_exists_already: + self._ensure_supporting_files() try: f = path.open("wb" if PY2 else "w") except (IOError, OSError): @@ -133,9 +135,6 @@ class Cache(object): with f: json.dump(value, f, indent=2, sort_keys=True) - if not cache_dir_exists_already: - self._ensure_supporting_files() - def _ensure_supporting_files(self): """Create supporting files in the cache dir that are not really part of the cache.""" readme_path = self._cachedir / "README.md"