From 225d910cb68d109eabb6f6bc66ddd4946d9710a1 Mon Sep 17 00:00:00 2001 From: jakkdl Date: Thu, 14 Nov 2024 15:28:42 +0100 Subject: [PATCH] add assertion to FixtureLookupError.formatrepr --- src/_pytest/fixtures.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/_pytest/fixtures.py b/src/_pytest/fixtures.py index 6b882fa3515..8f275e4d622 100644 --- a/src/_pytest/fixtures.py +++ b/src/_pytest/fixtures.py @@ -805,6 +805,15 @@ def formatrepr(self) -> FixtureLookupErrorRepr: stack = [self.request._pyfuncitem.obj] stack.extend(map(lambda x: x.func, self.fixturestack)) msg = self.msg + # This function currently makes an assumption that a non-None msg means we + # have a non-empty `self.fixturestack`. This is currently true, but if + # somebody at some point want to extend the use of FixtureLookupError to + # new cases it might break. + # Add the assert to make it clearer to developer that this will fail, otherwise + # it crashes because `fspath` does not get set due to `stack` being empty. + assert ( + self.msg is None or self.fixturestack + ), "formatrepr assumptions broken, rewrite it to handle it" if msg is not None: # The last fixture raise an error, let's present # it at the requesting side.