mirror of
https://github.com/pre-commit/pre-commit-hooks.git
synced 2026-04-09 21:04:17 +00:00
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
This commit is contained in:
parent
72ad6dc953
commit
f4cd1ba0d6
813 changed files with 66015 additions and 58839 deletions
|
|
@ -1,39 +1,41 @@
|
|||
from __future__ import annotations
|
||||
|
||||
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
|
||||
import pytest
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from _pytest.cacheprovider import Cache
|
||||
|
||||
STEPWISE_CACHE_DIR = "cache/stepwise"
|
||||
STEPWISE_CACHE_DIR = 'cache/stepwise'
|
||||
|
||||
|
||||
def pytest_addoption(parser: Parser) -> None:
|
||||
group = parser.getgroup("general")
|
||||
group = parser.getgroup('general')
|
||||
group.addoption(
|
||||
"--sw",
|
||||
"--stepwise",
|
||||
action="store_true",
|
||||
'--sw',
|
||||
'--stepwise',
|
||||
action='store_true',
|
||||
default=False,
|
||||
dest="stepwise",
|
||||
help="Exit on test failure and continue from last failing test next time",
|
||||
dest='stepwise',
|
||||
help='Exit on test failure and continue from last failing test next time',
|
||||
)
|
||||
group.addoption(
|
||||
"--sw-skip",
|
||||
"--stepwise-skip",
|
||||
action="store_true",
|
||||
'--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.",
|
||||
dest='stepwise_skip',
|
||||
help='Ignore the first failing test but stop on the next failing test. '
|
||||
'Implicitly enables --stepwise.',
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -42,14 +44,14 @@ 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")
|
||||
if config.getoption('stepwise'):
|
||||
config.pluginmanager.register(StepwisePlugin(config), 'stepwiseplugin')
|
||||
|
||||
|
||||
def pytest_sessionfinish(session: Session) -> None:
|
||||
if not session.config.getoption("stepwise"):
|
||||
if not session.config.getoption('stepwise'):
|
||||
assert session.config.cache is not None
|
||||
if hasattr(session.config, "workerinput"):
|
||||
if hasattr(session.config, 'workerinput'):
|
||||
# Do not update cache if this process is a xdist worker to prevent
|
||||
# race conditions (#10641).
|
||||
return
|
||||
|
|
@ -60,21 +62,21 @@ def pytest_sessionfinish(session: Session) -> None:
|
|||
class StepwisePlugin:
|
||||
def __init__(self, config: Config) -> None:
|
||||
self.config = config
|
||||
self.session: Optional[Session] = None
|
||||
self.report_status = ""
|
||||
self.session: Session | None = 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")
|
||||
self.lastfailed: str | None = 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]
|
||||
self, config: Config, items: list[nodes.Item],
|
||||
) -> None:
|
||||
if not self.lastfailed:
|
||||
self.report_status = "no previously failed tests, not skipping."
|
||||
self.report_status = 'no previously failed tests, not skipping.'
|
||||
return
|
||||
|
||||
# check all item nodes until we find a match on last failed
|
||||
|
|
@ -87,9 +89,9 @@ class StepwisePlugin:
|
|||
# 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."
|
||||
self.report_status = 'previously failed test not found, not skipping.'
|
||||
else:
|
||||
self.report_status = f"skipping {failed_index} already passed items."
|
||||
self.report_status = f'skipping {failed_index} already passed items.'
|
||||
deselected = items[:failed_index]
|
||||
del items[:failed_index]
|
||||
config.hook.pytest_deselected(items=deselected)
|
||||
|
|
@ -108,23 +110,23 @@ class StepwisePlugin:
|
|||
self.lastfailed = report.nodeid
|
||||
assert self.session is not None
|
||||
self.session.shouldstop = (
|
||||
"Test failed, continuing from this test next run."
|
||||
'Test failed, continuing from this test next run.'
|
||||
)
|
||||
|
||||
else:
|
||||
# If the test was actually run and did pass.
|
||||
if report.when == "call":
|
||||
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}"
|
||||
def pytest_report_collectionfinish(self) -> str | None:
|
||||
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"):
|
||||
if hasattr(self.config, 'workerinput'):
|
||||
# Do not update cache if this process is a xdist worker to prevent
|
||||
# race conditions (#10641).
|
||||
return
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue