Skip to content

Commit 6c06d27

Browse files
authored
Merge pull request #12839 from ethereum/lsp-test-fail-fast
lsp.py: Adds --fail-fast (-f) to terminate early on first failure.
2 parents 43f29c0 + 13a4c79 commit 6c06d27

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

test/lsp.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,13 @@ def __init__(self, actual, expected):
129129

130130
def create_cli_parser() -> argparse.ArgumentParser:
131131
parser = argparse.ArgumentParser(description="Solidity LSP Test suite")
132+
parser.set_defaults(fail_fast=False)
133+
parser.add_argument(
134+
"-f, --fail-fast",
135+
dest="fail_fast",
136+
action="store_true",
137+
help="Terminates the running tests on first failure."
138+
)
132139
parser.set_defaults(trace_io=False)
133140
parser.add_argument(
134141
"-T, --trace-io",
@@ -189,6 +196,7 @@ class SolidityLSPTestSuite: # {{{
189196
assertion_counter = Counter()
190197
print_assertions: bool = False
191198
trace_io: bool = False
199+
fail_fast: bool = False
192200
test_pattern: str
193201
marker_regexes: {}
194202

@@ -201,6 +209,7 @@ def __init__(self):
201209
self.print_assertions = args.print_assertions
202210
self.trace_io = args.trace_io
203211
self.test_pattern = args.test_pattern
212+
self.fail_fast = args.fail_fast
204213
self.marker_regexes = {
205214
Marker.SimpleRange: re.compile(R"(?P<range>[\^]+) (?P<tag>@\w+)"),
206215
Marker.MultilineRange: re.compile(R"\^(?P<delimiter>[()]) (?P<tag>@\w+)$")
@@ -230,10 +239,14 @@ def main(self) -> int:
230239
except ExpectationFailed:
231240
self.test_counter.failed += 1
232241
print(traceback.format_exc())
242+
if self.fail_fast:
243+
break
233244
except Exception as e: # pragma pylint: disable=broad-except
234245
self.test_counter.failed += 1
235246
print(f"Unhandled exception {e.__class__.__name__} caught: {e}")
236247
print(traceback.format_exc())
248+
if self.fail_fast:
249+
break
237250

238251
print(
239252
f"\n{SGR_NOTICE}Summary:{SGR_RESET}\n\n"

0 commit comments

Comments
 (0)