(collector: Collector)
| 386 | |
| 387 | |
| 388 | def 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 | |
| 439 | class SetupState: |
nothing calls this directly
no test coverage detected