fix(warnings-recorder): Match also subclass of warning in pop
This commit is contained in:
parent
18e87c9831
commit
8ac3c645fa
|
@ -206,12 +206,18 @@ class WarningsRecorder(warnings.catch_warnings): # type:ignore[type-arg]
|
|||
return len(self._list)
|
||||
|
||||
def pop(self, cls: Type[Warning] = Warning) -> "warnings.WarningMessage":
|
||||
"""Pop the first recorded warning, raise exception if not exists."""
|
||||
"""Pop the first recorded warning (or subclass of warning), raise exception if not exists."""
|
||||
matches = []
|
||||
for i, w in enumerate(self._list):
|
||||
if issubclass(w.category, cls):
|
||||
if w.category == cls:
|
||||
return self._list.pop(i)
|
||||
__tracebackhide__ = True
|
||||
raise AssertionError(f"{cls!r} not found in warning list")
|
||||
if issubclass(w.category, cls):
|
||||
matches.append((i, w))
|
||||
if not matches:
|
||||
__tracebackhide__ = True
|
||||
raise AssertionError(f"{cls!r} not found in warning list")
|
||||
(idx, best), *rest = matches
|
||||
return self._list.pop(idx)
|
||||
|
||||
def clear(self) -> None:
|
||||
"""Clear the list of recorded warnings."""
|
||||
|
|
Loading…
Reference in New Issue