mirror of
https://github.com/hwchase17/langchain.git
synced 2026-06-09 10:17:00 +00:00
fix(standard-tests): recognize parametrize-nested xfails in override check (#37613)
`test_no_overrides_DO_NOT_OVERRIDE` only treated an override as valid when the method itself carried an `@pytest.mark.xfail(reason=...)`. Overrides that re-parametrize a standard test and xfail only a subset of cases via `pytest.param(..., marks=pytest.mark.xfail(...))` were rejected.
This commit is contained in:
@@ -46,10 +46,18 @@ class BaseStandardTests:
|
|||||||
m = getattr(self.__class__, method)
|
m = getattr(self.__class__, method)
|
||||||
if not hasattr(m, "pytestmark"):
|
if not hasattr(m, "pytestmark"):
|
||||||
return False
|
return False
|
||||||
marks = m.pytestmark
|
for mark in m.pytestmark:
|
||||||
return any(
|
if mark.name == "xfail" and mark.kwargs.get("reason"):
|
||||||
mark.name == "xfail" and mark.kwargs.get("reason") for mark in marks
|
return True
|
||||||
)
|
# Also accept xfail marks on individual `pytest.param` entries
|
||||||
|
# within a `parametrize` - supports xfailing only a subset of
|
||||||
|
# parametrized cases.
|
||||||
|
if mark.name == "parametrize" and len(mark.args) >= 2:
|
||||||
|
for param in mark.args[1]:
|
||||||
|
for inner in getattr(param, "marks", ()):
|
||||||
|
if inner.name == "xfail" and inner.kwargs.get("reason"):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
overridden_not_xfail = [
|
overridden_not_xfail = [
|
||||||
method for method in overridden_tests if not is_xfail(method)
|
method for method in overridden_tests if not is_xfail(method)
|
||||||
|
|||||||
Reference in New Issue
Block a user