Skip to content

Commit b3f435a

Browse files
committed
feat(lexarg): Add --fail-fast flag
See rust-lang/rust#142859
1 parent 3ad01b1 commit b3f435a

3 files changed

Lines changed: 10 additions & 98 deletions

File tree

crates/libtest-lexarg/src/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ Options:
108108
--ignored Run only ignored tests
109109
--include-ignored
110110
Run ignored and not ignored tests
111+
--fail-fast Don't start new tests after the first failure
111112
--no-capture don't capture stdout/stderr of each task, allow
112113
printing directly
113114
--show-output Show captured stdout of successful tests
@@ -221,6 +222,9 @@ impl TestOptsBuilder {
221222
Long("exact") => {
222223
self.opts.filter_exact = true;
223224
}
225+
Long("fail-fast") => {
226+
self.opts.fail_fast = true;
227+
}
224228
Long("color") => {
225229
let color = parser
226230
.next_flag_value()

crates/libtest2-mimic/tests/testsuite/mixed_bag.rs

Lines changed: 3 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,7 +1019,7 @@ test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in
10191019
#[test]
10201020
fn fail_fast() {
10211021
check(
1022-
&[],
1022+
&["--fail-fast"],
10231023
101,
10241024
str![[r#"
10251025
@@ -1028,10 +1028,6 @@ test bear ... ignored
10281028
test bunny ... ignored
10291029
test cat ... ok
10301030
test dog ... FAILED
1031-
test fly ... ignored
1032-
test fox ... ok
1033-
test frog ... ignored
1034-
test owl ... ignored
10351031
10361032
failures:
10371033
@@ -1042,7 +1038,7 @@ was not a good boy
10421038
failures:
10431039
dog
10441040
1045-
test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in [..]s
1041+
test result: FAILED. 1 passed; 1 failed; 2 ignored; 0 filtered out; finished in [..]s
10461042
10471043
10481044
"#]],
@@ -1057,7 +1053,7 @@ test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in
10571053
#[cfg(feature = "json")]
10581054
fn fail_fast_json() {
10591055
check(
1060-
&["-Zunstable-options", "--format=json"],
1056+
&["-Zunstable-options", "--format=json", "--fail-fast"],
10611057
101,
10621058
str![[r#"
10631059
[
@@ -1145,48 +1141,6 @@ fn fail_fast_json() {
11451141
"name": "dog",
11461142
"status": "failed"
11471143
},
1148-
{
1149-
"event": "case_start",
1150-
"name": "fly"
1151-
},
1152-
{
1153-
"elapsed_s": "[..]",
1154-
"event": "case_complete",
1155-
"message": "fails",
1156-
"name": "fly",
1157-
"status": "ignored"
1158-
},
1159-
{
1160-
"event": "case_start",
1161-
"name": "fox"
1162-
},
1163-
{
1164-
"elapsed_s": "[..]",
1165-
"event": "case_complete",
1166-
"name": "fox"
1167-
},
1168-
{
1169-
"event": "case_start",
1170-
"name": "frog"
1171-
},
1172-
{
1173-
"elapsed_s": "[..]",
1174-
"event": "case_complete",
1175-
"message": "slow",
1176-
"name": "frog",
1177-
"status": "ignored"
1178-
},
1179-
{
1180-
"event": "case_start",
1181-
"name": "owl"
1182-
},
1183-
{
1184-
"elapsed_s": "[..]",
1185-
"event": "case_complete",
1186-
"message": "fails",
1187-
"name": "owl",
1188-
"status": "ignored"
1189-
},
11901144
{
11911145
"elapsed_s": "[..]",
11921146
"event": "suite_complete"

crates/libtest2/tests/testsuite/mixed_bag.rs

Lines changed: 3 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,7 +1026,7 @@ test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in
10261026
#[test]
10271027
fn fail_fast() {
10281028
check(
1029-
&[],
1029+
&["--fail-fast"],
10301030
101,
10311031
str![[r#"
10321032
@@ -1035,10 +1035,6 @@ test bear ... ignored
10351035
test bunny ... ignored
10361036
test cat ... ok
10371037
test dog ... FAILED
1038-
test fly ... ignored
1039-
test fox ... ok
1040-
test frog ... ignored
1041-
test owl ... ignored
10421038
10431039
failures:
10441040
@@ -1049,7 +1045,7 @@ was not a good boy
10491045
failures:
10501046
dog
10511047
1052-
test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in [..]s
1048+
test result: FAILED. 1 passed; 1 failed; 2 ignored; 0 filtered out; finished in [..]s
10531049
10541050
10551051
"#]],
@@ -1064,7 +1060,7 @@ test result: FAILED. 2 passed; 1 failed; 5 ignored; 0 filtered out; finished in
10641060
#[cfg(feature = "json")]
10651061
fn fail_fast_json() {
10661062
check(
1067-
&["-Zunstable-options", "--format=json"],
1063+
&["-Zunstable-options", "--format=json", "--fail-fast"],
10681064
101,
10691065
str![[r#"
10701066
[
@@ -1152,48 +1148,6 @@ fn fail_fast_json() {
11521148
"name": "dog",
11531149
"status": "failed"
11541150
},
1155-
{
1156-
"event": "case_start",
1157-
"name": "fly"
1158-
},
1159-
{
1160-
"elapsed_s": "[..]",
1161-
"event": "case_complete",
1162-
"message": "fails",
1163-
"name": "fly",
1164-
"status": "ignored"
1165-
},
1166-
{
1167-
"event": "case_start",
1168-
"name": "fox"
1169-
},
1170-
{
1171-
"elapsed_s": "[..]",
1172-
"event": "case_complete",
1173-
"name": "fox"
1174-
},
1175-
{
1176-
"event": "case_start",
1177-
"name": "frog"
1178-
},
1179-
{
1180-
"elapsed_s": "[..]",
1181-
"event": "case_complete",
1182-
"message": "slow",
1183-
"name": "frog",
1184-
"status": "ignored"
1185-
},
1186-
{
1187-
"event": "case_start",
1188-
"name": "owl"
1189-
},
1190-
{
1191-
"elapsed_s": "[..]",
1192-
"event": "case_complete",
1193-
"message": "fails",
1194-
"name": "owl",
1195-
"status": "ignored"
1196-
},
11971151
{
11981152
"elapsed_s": "[..]",
11991153
"event": "suite_complete"

0 commit comments

Comments
 (0)