Move test_issue4445_cacheprovider_set into test_cache_failure_warns

Would need to be adjusted anyway non-trivially, and we can just harden
`test_cache_failure_warns` instead.
This commit is contained in:
Daniel Hahler 2020-02-15 02:01:22 +01:00
parent 02aa8adae1
commit 2b5adc88a7
2 changed files with 9 additions and 22 deletions

View File

@ -68,7 +68,15 @@ class TestNewAPI:
assert result.ret == 1
# warnings from nodeids, lastfailed, and stepwise
result.stdout.fnmatch_lines(
["*could not create cache path*", "*3 warnings*"]
[
# Validate location/stacklevel of warning from cacheprovider.
"*= warnings summary =*",
"*/cacheprovider.py:314",
" */cacheprovider.py:314: PytestCacheWarning: could not create cache path "
"{}/v/cache/nodeids".format(cache_dir),
' config.cache.set("cache/nodeids", self.cached_nodeids)',
"*1 failed, 3 warnings in*",
]
)
finally:
testdir.tmpdir.ensure_dir(".pytest_cache").chmod(mode)

View File

@ -712,27 +712,6 @@ class TestStackLevel:
assert "resultlog.py" in file
assert func == "pytest_configure"
def test_issue4445_cacheprovider_set(self, testdir, capwarn):
"""#4445: Make sure the warning points to a reasonable location
See origin of _issue_warning_captured at: _pytest.cacheprovider.py:59
"""
testdir.tmpdir.join(".pytest_cache").write("something wrong")
testdir.runpytest(plugins=[capwarn()])
# with stacklevel=3 the warning originates from one stacklevel above
# _issue_warning_captured in cacheprovider.Cache.set and is thrown
# when there are errors during cache folder creation
# set is called twice (in module stepwise and in cacheprovider) so emits
# two warnings when there are errors during cache folder creation. (is this intentional?)
assert len(capwarn.captured) == 2
warning, location = capwarn.captured.pop()
file, lineno, func = location
assert "could not create cache path" in str(warning.message)
assert "cacheprovider.py" in file
assert func == "set"
def test_issue4445_issue5928_mark_generator(self, testdir):
"""#4445 and #5928: Make sure the warning from an unknown mark points to
the test file where this mark is used.