Skip to content

Commit 27aa88e

Browse files
committed
fix(json)!: Remove CaseMessage content from CaseComplete
1 parent 49f8e8d commit 27aa88e

7 files changed

Lines changed: 112 additions & 96 deletions

File tree

crates/libtest-json/event.schema.json

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -257,23 +257,6 @@
257257
"name": {
258258
"type": "string"
259259
},
260-
"status": {
261-
"description": "`None` means success",
262-
"anyOf": [
263-
{
264-
"$ref": "#/$defs/RunStatus"
265-
},
266-
{
267-
"type": "null"
268-
}
269-
]
270-
},
271-
"message": {
272-
"type": [
273-
"string",
274-
"null"
275-
]
276-
},
277260
"elapsed_s": {
278261
"anyOf": [
279262
{

crates/libtest-json/src/event.rs

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -367,17 +367,6 @@ impl CaseMessage {
367367
#[cfg_attr(feature = "serde", serde(rename_all = "snake_case"))]
368368
pub struct CaseComplete {
369369
pub name: String,
370-
/// `None` means success
371-
#[cfg_attr(
372-
feature = "serde",
373-
serde(default, skip_serializing_if = "Option::is_none")
374-
)]
375-
pub status: Option<RunStatus>,
376-
#[cfg_attr(
377-
feature = "serde",
378-
serde(default, skip_serializing_if = "Option::is_none")
379-
)]
380-
pub message: Option<String>,
381370
#[cfg_attr(
382371
feature = "serde",
383372
serde(default, skip_serializing_if = "Option::is_none")
@@ -402,20 +391,6 @@ impl CaseComplete {
402391
buffer.keyval_sep().unwrap();
403392
buffer.value(&self.name).unwrap();
404393

405-
if let Some(status) = self.status {
406-
buffer.val_sep().unwrap();
407-
buffer.key("status").unwrap();
408-
buffer.keyval_sep().unwrap();
409-
buffer.value(status.as_str()).unwrap();
410-
}
411-
412-
if let Some(message) = &self.message {
413-
buffer.val_sep().unwrap();
414-
buffer.key("message").unwrap();
415-
buffer.keyval_sep().unwrap();
416-
buffer.value(message).unwrap();
417-
}
418-
419394
if let Some(elapsed_s) = self.elapsed_s {
420395
buffer.val_sep().unwrap();
421396
buffer.key("elapsed_s").unwrap();

crates/libtest-json/tests/roundtrip.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,6 @@ fn case_complete() {
131131
t(
132132
libtest_json::event::CaseComplete {
133133
name: "Hello\tworld!".to_owned(),
134-
status: None,
135-
message: None,
136134
elapsed_s: None,
137135
},
138136
str![[r#"{"event":"case_complete","name":"Hello\tworld!"}"#]],
@@ -141,13 +139,9 @@ fn case_complete() {
141139
t(
142140
libtest_json::event::CaseComplete {
143141
name: "Hello\tworld!".to_owned(),
144-
status: Some(libtest_json::RunStatus::Ignored),
145-
message: Some("This\tfailed".to_owned()),
146142
elapsed_s: Some(libtest_json::Elapsed(Default::default())),
147143
},
148-
str![[
149-
r#"{"event":"case_complete","name":"Hello\tworld!","status":"ignored","message":"This\tfailed","elapsed_s":"0"}"#
150-
]],
144+
str![[r#"{"event":"case_complete","name":"Hello\tworld!","elapsed_s":"0"}"#]],
151145
);
152146
}
153147

crates/libtest2-harness/src/harness.rs

Lines changed: 39 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -310,11 +310,26 @@ fn run(
310310
}
311311

312312
impl RunningTest {
313-
fn join(self, event: &mut notify::event::CaseComplete) {
314-
if self.join_handle.join().is_err() && event.status.is_none() {
315-
event.status = Some(notify::RunStatus::Failed);
316-
event.message = Some("panicked after reporting success".to_owned());
313+
fn join(
314+
self,
315+
start: &std::time::Instant,
316+
event: &notify::event::CaseComplete,
317+
notifier: &mut dyn notify::Notifier,
318+
) -> std::io::Result<()> {
319+
if self.join_handle.join().is_err() {
320+
let status = notify::RunStatus::Failed;
321+
let message = Some("panicked after reporting success".to_owned());
322+
notifier.notify(
323+
notify::event::CaseMessage {
324+
name: event.name.clone(),
325+
status,
326+
message,
327+
elapsed_s: Some(notify::Elapsed(start.elapsed())),
328+
}
329+
.into(),
330+
)?;
317331
}
332+
Ok(())
318333
}
319334
}
320335

@@ -379,10 +394,10 @@ fn run(
379394
}
380395
}
381396

382-
let mut event = rx.recv().unwrap();
383-
if let notify::Event::CaseComplete(event) = &mut event {
397+
let event = rx.recv().unwrap();
398+
if let notify::Event::CaseComplete(event) = &event {
384399
let running_test = running_tests.remove(&event.name).unwrap();
385-
running_test.join(event);
400+
running_test.join(start, event, notifier)?;
386401
pending -= 1;
387402
}
388403
notifier.notify(event)?;
@@ -446,20 +461,31 @@ fn run_case(
446461
Err(RunError::fail(msg))
447462
});
448463

449-
let err = outcome.as_ref().err();
450-
let status = err.map(|e| e.status());
451-
let message = err.and_then(|e| e.cause().map(|c| c.to_string()));
464+
let mut case_status = None;
465+
if let Some(err) = outcome.as_ref().err() {
466+
let status = err.status();
467+
case_status = Some(status);
468+
let message = err.cause().map(|c| c.to_string());
469+
notifier.notify(
470+
notify::event::CaseMessage {
471+
name: case.name().to_owned(),
472+
status,
473+
message,
474+
elapsed_s: Some(notify::Elapsed(start.elapsed())),
475+
}
476+
.into(),
477+
)?;
478+
}
479+
452480
notifier.notify(
453481
notify::event::CaseComplete {
454482
name: case.name().to_owned(),
455-
status,
456-
message,
457483
elapsed_s: Some(notify::Elapsed(start.elapsed())),
458484
}
459485
.into(),
460486
)?;
461487

462-
Ok(status != Some(notify::RunStatus::Failed))
488+
Ok(case_status != Some(notify::RunStatus::Failed))
463489
}
464490

465491
/// Fixed frame used to clean the backtrace with `RUST_BACKTRACE=1`.

crates/libtest2-harness/src/notify/summary.rs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -132,18 +132,6 @@ impl super::Notifier for Summary {
132132
.push(inner);
133133
}
134134
Event::CaseComplete(inner) => {
135-
if let Some(status) = inner.status {
136-
self.status
137-
.entry(inner.name.clone())
138-
.or_default()
139-
.messages
140-
.push(CaseMessage {
141-
name: inner.name.clone(),
142-
status,
143-
message: inner.message.clone(),
144-
elapsed_s: inner.elapsed_s,
145-
});
146-
}
147135
self.status.entry(inner.name).or_default().completed = true;
148136
}
149137
Event::RunComplete(inner) => {

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

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -898,12 +898,17 @@ fn test_json() {
898898
"elapsed_s": "[..]"
899899
},
900900
{
901-
"event": "case_complete",
901+
"event": "case_message",
902902
"name": "bear",
903903
"status": "ignored",
904904
"message": "fails",
905905
"elapsed_s": "[..]"
906906
},
907+
{
908+
"event": "case_complete",
909+
"name": "bear",
910+
"elapsed_s": "[..]"
911+
},
907912
{
908913
"event": "case_start",
909914
"name": "cat",
@@ -928,13 +933,6 @@ fn test_json() {
928933
"elapsed_s": "[..]",
929934
"event": "discover_complete"
930935
},
931-
{
932-
"elapsed_s": "[..]",
933-
"event": "case_complete",
934-
"message": "fails",
935-
"name": "bear",
936-
"status": "ignored"
937-
},
938936
{
939937
"elapsed_s": "[..]",
940938
"event": "case_complete",
@@ -1007,6 +1005,18 @@ fn test_json() {
10071005
"name": "owl",
10081006
"selected": false,
10091007
"elapsed_s": "[..]"
1008+
},
1009+
{
1010+
"event": "case_message",
1011+
"name": "bear",
1012+
"status": "ignored",
1013+
"message": "fails",
1014+
"elapsed_s": "[..]"
1015+
},
1016+
{
1017+
"event": "case_complete",
1018+
"name": "bear",
1019+
"elapsed_s": "[..]"
10101020
}
10111021
]
10121022
"#]]
@@ -1157,24 +1167,34 @@ fn fail_fast_json() {
11571167
"elapsed_s": "[..]"
11581168
},
11591169
{
1160-
"event": "case_complete",
1170+
"event": "case_message",
11611171
"name": "bear",
11621172
"status": "ignored",
11631173
"message": "fails",
11641174
"elapsed_s": "[..]"
11651175
},
1176+
{
1177+
"event": "case_complete",
1178+
"name": "bear",
1179+
"elapsed_s": "[..]"
1180+
},
11661181
{
11671182
"event": "case_start",
11681183
"name": "bunny",
11691184
"elapsed_s": "[..]"
11701185
},
11711186
{
1172-
"event": "case_complete",
1187+
"event": "case_message",
11731188
"name": "bunny",
11741189
"status": "ignored",
11751190
"message": "fails",
11761191
"elapsed_s": "[..]"
11771192
},
1193+
{
1194+
"event": "case_complete",
1195+
"name": "bunny",
1196+
"elapsed_s": "[..]"
1197+
},
11781198
{
11791199
"event": "case_start",
11801200
"name": "cat",
@@ -1191,12 +1211,17 @@ fn fail_fast_json() {
11911211
"elapsed_s": "[..]"
11921212
},
11931213
{
1194-
"event": "case_complete",
1214+
"event": "case_message",
11951215
"name": "dog",
11961216
"status": "failed",
11971217
"message": "was not a good boy",
11981218
"elapsed_s": "[..]"
11991219
},
1220+
{
1221+
"event": "case_complete",
1222+
"name": "dog",
1223+
"elapsed_s": "[..]"
1224+
},
12001225
{
12011226
"event": "run_complete",
12021227
"elapsed_s": "[..]"

0 commit comments

Comments
 (0)