-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Docs on warnings filters should note that ResourceWarning
is often delayed
#9825
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I think |
That would explain the difference in behaviour, at least. On the one hand it's easy to make an argument not to special case this sort of thing - workarounds are easy enough to find - on the other, warnings are meant to be about abnormal behaviour so perhaps special cases are warranted. If nothing else, could be worth a note in the docs that some categories of warnings need additional filters. |
Where specifically in the docs would you have seen such a warning? I'd be happy for someone to add one (perhaps in multiple places), but to be of any use it has to be somewhere that people would see... |
ResourceWarning
is often delayed
@Zac-HD I see you've relabelled this as docs - is that a confirmation that filtering for warnings not working as expected is … expected? My docs comment is more of an "if this is simply too hard to fix" (which it might be) but I'd still consider this a bug, in that a feature designed to catch warnings fails to catch a significant class of warning. It seems worth keeping this open as a bug to at least explore a fix rather than just documenting places where a feature doesn't work. In any case, I had been scouring https://docs.pytest.org/en/6.2.x/warnings.html when looking at this, so a "here are cases where this feature doesn't work" note for |
It's not behaving how you expect, but it is behaving how I expect it to - and IMO that means it's a docs issue. And yes, unfortunately it's not feasible to change this, because the So I think an explanatory section much like the "DeprecationWarning and PendingDeprecationWarning" section, and located just below it", would be useful here 🙂 |
Your explanation of expected behaviour is precisely what I was looking for, without that the change to Agreed on the explanatory section, perhaps the solution of filtering in combination with |
Some of my tests need to ensure open files are closed. Let's use the simplest example:
When I run pytest, the warning is thrown and even printed in the test output, but the test still passes:
Removing
@pytest.mark.filterwarnings
or changing the warning type to something unrelated (likeDeprecationWarning
) results in the test passing without printing any warnings at all. That tells me pytest is picking up the warning, but it's being subsequently caught bypytest.PytestUnraisableExceptionWarning
, and my tests still pass because I wasn't filtering for that. If I filter forpytest.PytestUnraisableExceptionWarning
instead the test also passes, because it isn't looking for the originalResourceWarning
.The only solution I can think of is to filter for both:
Unless I'm missing something this seems to be a bug for
ResourceWarning
in particular, since I can't reproduce this with other warning types. I think failing the test case without requiring the 2nd generic warning filter is the reasonable expected behaviour here.Note: this test example was run on a vanilla virtual env:
The text was updated successfully, but these errors were encountered: