X7ROOT File Manager
Current Path:
/opt/cloudlinux/venv/lib/python3.11/site-packages/_pytest
opt
/
cloudlinux
/
venv
/
lib
/
python3.11
/
site-packages
/
_pytest
/
??
..
??
__init__.py
(356 B)
??
__pycache__
??
_argcomplete.py
(3.71 KB)
??
_code
??
_io
??
_py
??
_version.py
(160 B)
??
assertion
??
cacheprovider.py
(20.89 KB)
??
capture.py
(33.92 KB)
??
compat.py
(12.89 KB)
??
config
??
debugging.py
(13.18 KB)
??
deprecated.py
(5.36 KB)
??
doctest.py
(25.35 KB)
??
faulthandler.py
(3.04 KB)
??
fixtures.py
(65.51 KB)
??
freeze_support.py
(1.31 KB)
??
helpconfig.py
(8.34 KB)
??
hookspec.py
(31.79 KB)
??
junitxml.py
(25.11 KB)
??
legacypath.py
(16.53 KB)
??
logging.py
(33.23 KB)
??
main.py
(31.73 KB)
??
mark
??
monkeypatch.py
(14.51 KB)
??
nodes.py
(25.94 KB)
??
nose.py
(1.65 KB)
??
outcomes.py
(10.02 KB)
??
pastebin.py
(3.86 KB)
??
pathlib.py
(25.22 KB)
??
py.typed
(0 B)
??
pytester.py
(60.52 KB)
??
pytester_assertions.py
(2.27 KB)
??
python.py
(69.49 KB)
??
python_api.py
(37.5 KB)
??
python_path.py
(709 B)
??
recwarn.py
(10.67 KB)
??
reports.py
(20.35 KB)
??
runner.py
(18.01 KB)
??
scope.py
(2.81 KB)
??
setuponly.py
(3.18 KB)
??
setupplan.py
(1.19 KB)
??
skipping.py
(9.96 KB)
??
stash.py
(2.98 KB)
??
stepwise.py
(4.6 KB)
??
terminal.py
(52.25 KB)
??
threadexception.py
(2.85 KB)
??
timing.py
(375 B)
??
tmpdir.py
(11.43 KB)
??
unittest.py
(14.46 KB)
??
unraisableexception.py
(3.12 KB)
??
warning_types.py
(4.37 KB)
??
warnings.py
(4.95 KB)
Editing: stepwise.py
from typing import List from typing import Optional from typing import TYPE_CHECKING import pytest from _pytest import nodes from _pytest.config import Config from _pytest.config.argparsing import Parser from _pytest.main import Session from _pytest.reports import TestReport if TYPE_CHECKING: from _pytest.cacheprovider import Cache STEPWISE_CACHE_DIR = "cache/stepwise" def pytest_addoption(parser: Parser) -> None: group = parser.getgroup("general") group.addoption( "--sw", "--stepwise", action="store_true", default=False, dest="stepwise", help="Exit on test failure and continue from last failing test next time", ) group.addoption( "--sw-skip", "--stepwise-skip", action="store_true", default=False, dest="stepwise_skip", help="Ignore the first failing test but stop on the next failing test. " "Implicitly enables --stepwise.", ) @pytest.hookimpl def pytest_configure(config: Config) -> None: if config.option.stepwise_skip: # allow --stepwise-skip to work on it's own merits. config.option.stepwise = True if config.getoption("stepwise"): config.pluginmanager.register(StepwisePlugin(config), "stepwiseplugin") def pytest_sessionfinish(session: Session) -> None: if not session.config.getoption("stepwise"): assert session.config.cache is not None if hasattr(session.config, "workerinput"): # Do not update cache if this process is a xdist worker to prevent # race conditions (#10641). return # Clear the list of failing tests if the plugin is not active. session.config.cache.set(STEPWISE_CACHE_DIR, []) class StepwisePlugin: def __init__(self, config: Config) -> None: self.config = config self.session: Optional[Session] = None self.report_status = "" assert config.cache is not None self.cache: Cache = config.cache self.lastfailed: Optional[str] = self.cache.get(STEPWISE_CACHE_DIR, None) self.skip: bool = config.getoption("stepwise_skip") def pytest_sessionstart(self, session: Session) -> None: self.session = session def pytest_collection_modifyitems( self, config: Config, items: List[nodes.Item] ) -> None: if not self.lastfailed: self.report_status = "no previously failed tests, not skipping." return # check all item nodes until we find a match on last failed failed_index = None for index, item in enumerate(items): if item.nodeid == self.lastfailed: failed_index = index break # If the previously failed test was not found among the test items, # do not skip any tests. if failed_index is None: self.report_status = "previously failed test not found, not skipping." else: self.report_status = f"skipping {failed_index} already passed items." deselected = items[:failed_index] del items[:failed_index] config.hook.pytest_deselected(items=deselected) def pytest_runtest_logreport(self, report: TestReport) -> None: if report.failed: if self.skip: # Remove test from the failed ones (if it exists) and unset the skip option # to make sure the following tests will not be skipped. if report.nodeid == self.lastfailed: self.lastfailed = None self.skip = False else: # Mark test as the last failing and interrupt the test session. self.lastfailed = report.nodeid assert self.session is not None self.session.shouldstop = ( "Test failed, continuing from this test next run." ) else: # If the test was actually run and did pass. if report.when == "call": # Remove test from the failed ones, if exists. if report.nodeid == self.lastfailed: self.lastfailed = None def pytest_report_collectionfinish(self) -> Optional[str]: if self.config.getoption("verbose") >= 0 and self.report_status: return f"stepwise: {self.report_status}" return None def pytest_sessionfinish(self) -> None: if hasattr(self.config, "workerinput"): # Do not update cache if this process is a xdist worker to prevent # race conditions (#10641). return self.cache.set(STEPWISE_CACHE_DIR, self.lastfailed)
Upload File
Create Folder