pylint
pylint copied to clipboard
Allow CheckerTestCase to assertDoesNotAddMessages() to check that a specific message has not been added
Current problem
I use CheckerTestCase
in tests for linting scripts in a project. There are some tests where I want to assert that a specific message has not been added given a specific code snippet. While assertNoMessages()
works for now, it is possible in the future that I want to assert that a different message occurs for the same code snippet. assertNoMessages()
wouldn't work because we do want to check that the different message has been added, but replacing assertNoMessages()
with assertAddsMessages(different_message, ...)
would mean that we can no longer check that the original message is not being added.
Desired solution
If I could directly assert that a specific message has not been added, then I could have more control over which specific messages I'd want or would not want under various scenarios. For my given example, something like this:
assertDoesNotAddMessages(original_message, ...)
assertAddsMessages(different_message, ...)
Better represents which messages I want to occur and which messages I want to not occur.
Additional context
No response
What about adding one function like assertMessages(emitted:iterable[str] | None, not_emitted: iterable[str] | None)
? Emitted = None would means no message were emitted, not_emitted = None would means we don't care if unexpected messages are emitted.
The original proposal is more like this from the stdlib:
self.assertLogs(...
self.assertNoLogs(...
If we add a new assertMessages, we have "two ways to do it" unless we deprecate the old way (no reason to).