@@ -129,6 +129,13 @@ def __init__(self, actual, expected):
129
129
130
130
def create_cli_parser () -> argparse .ArgumentParser :
131
131
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
+ )
132
139
parser .set_defaults (trace_io = False )
133
140
parser .add_argument (
134
141
"-T, --trace-io" ,
@@ -189,6 +196,7 @@ class SolidityLSPTestSuite: # {{{
189
196
assertion_counter = Counter ()
190
197
print_assertions : bool = False
191
198
trace_io : bool = False
199
+ fail_fast : bool = False
192
200
test_pattern : str
193
201
marker_regexes : {}
194
202
@@ -201,6 +209,7 @@ def __init__(self):
201
209
self .print_assertions = args .print_assertions
202
210
self .trace_io = args .trace_io
203
211
self .test_pattern = args .test_pattern
212
+ self .fail_fast = args .fail_fast
204
213
self .marker_regexes = {
205
214
Marker .SimpleRange : re .compile (R"(?P<range>[\^]+) (?P<tag>@\w+)" ),
206
215
Marker .MultilineRange : re .compile (R"\^(?P<delimiter>[()]) (?P<tag>@\w+)$" )
@@ -230,10 +239,14 @@ def main(self) -> int:
230
239
except ExpectationFailed :
231
240
self .test_counter .failed += 1
232
241
print (traceback .format_exc ())
242
+ if self .fail_fast :
243
+ break
233
244
except Exception as e : # pragma pylint: disable=broad-except
234
245
self .test_counter .failed += 1
235
246
print (f"Unhandled exception { e .__class__ .__name__ } caught: { e } " )
236
247
print (traceback .format_exc ())
248
+ if self .fail_fast :
249
+ break
237
250
238
251
print (
239
252
f"\n { SGR_NOTICE } Summary:{ SGR_RESET } \n \n "
0 commit comments