Add TestCase.assertWarnings(), to help test against multiple warnings.

Review Request #12723 — Created Nov. 14, 2022 and submitted — Latest diff uploaded

Information

Djblets
release-3.x

Reviewers

This introduces TestCase.assertWarnings(), which takes a list of
dictionaries representing warnings and compares against them. Like our
version of assertWarns(), it can compare against classes and then
optionally messages. This can be extended for other capabilities, like
native regex matching, if needed.

This can be used both for asserting that there are warnings (by
specifying one or more items in the list) or no warnings (by specifying
an empty list).

Both TestCase.assertWarns() and assertNoWarnings() now wraps this,
helping us manage just one set of logic.

TestCase.assertWarns() is pending a deprecation phase It's
incompatible with Python's own version of assertWarns(), and as such
we should probably move off of it. For now, it's not documented as
deprecated, but it does have a big comment about it. We'll want to
figure that out at some point, but not today.

All unit tests pass.

Tested the multiple warning matching in an in-progress change.

Commits

Files