MCPcopy
hub / github.com/pytest-dev/pytest / pytest_make_collect_report

Function pytest_make_collect_report

src/_pytest/runner.py:388–436  ·  view source on GitHub ↗
(collector: Collector)

Source from the content-addressed store, hash-verified

386
387
388def pytest_make_collect_report(collector: Collector) -> CollectReport:
389 def collect() -> list[Item | Collector]:
390 # Before collecting, if this is a Directory, load the conftests.
391 # If a conftest import fails to load, it is considered a collection
392 # error of the Directory collector. This is why it's done inside of the
393 # CallInfo wrapper.
394 #
395 # Note: initial conftests are loaded early, not here.
396 if isinstance(collector, Directory):
397 collector.config.pluginmanager._loadconftestmodules(
398 collector.path,
399 collector.config.getoption("importmode"),
400 rootpath=collector.config.rootpath,
401 consider_namespace_packages=collector.config.getini(
402 "consider_namespace_packages"
403 ),
404 )
405
406 return list(collector.collect())
407
408 call = CallInfo.from_call(
409 collect, "collect", reraise=(KeyboardInterrupt, SystemExit)
410 )
411 longrepr: None | tuple[str, int, str] | str | TerminalRepr = None
412 if not call.excinfo:
413 outcome: Literal["passed", "skipped", "failed"] = "passed"
414 else:
415 skip_exceptions = [Skipped]
416 unittest = sys.modules.get("unittest")
417 if unittest is not None:
418 skip_exceptions.append(unittest.SkipTest)
419 if isinstance(call.excinfo.value, tuple(skip_exceptions)):
420 outcome = "skipped"
421 r_ = collector._repr_failure_py(call.excinfo, "line")
422 assert isinstance(r_, ExceptionChainRepr), repr(r_)
423 r = r_.reprcrash
424 assert r
425 longrepr = (str(r.path), r.lineno, r.message)
426 else:
427 outcome = "failed"
428 errorinfo = collector.repr_failure(call.excinfo)
429 if not hasattr(errorinfo, "toterminal"):
430 assert isinstance(errorinfo, str)
431 errorinfo = CollectErrorRepr(errorinfo)
432 longrepr = errorinfo
433 result = call.result if not call.excinfo else None
434 rep = CollectReport(collector.nodeid, outcome, longrepr, result)
435 rep.call = call # type: ignore # see collect_one_node
436 return rep
437
438
439class SetupState:

Callers

nothing calls this directly

Calls 7

CollectErrorReprClass · 0.85
CollectReportClass · 0.85
from_callMethod · 0.80
appendMethod · 0.80
_repr_failure_pyMethod · 0.80
getMethod · 0.45
repr_failureMethod · 0.45

Tested by

no test coverage detected