summaryrefslogtreecommitdiffstats
path: root/library/test/src/formatters
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:20:39 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:20:39 +0000
commit1376c5a617be5c25655d0d7cb63e3beaa5a6e026 (patch)
tree3bb8d61aee02bc7a15eab3f36e3b921afc2075d0 /library/test/src/formatters
parentReleasing progress-linux version 1.69.0+dfsg1-1~progress7.99u1. (diff)
downloadrustc-1376c5a617be5c25655d0d7cb63e3beaa5a6e026.tar.xz
rustc-1376c5a617be5c25655d0d7cb63e3beaa5a6e026.zip
Merging upstream version 1.70.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'library/test/src/formatters')
-rw-r--r--library/test/src/formatters/json.rs52
-rw-r--r--library/test/src/formatters/junit.rs14
-rw-r--r--library/test/src/formatters/mod.rs6
-rw-r--r--library/test/src/formatters/pretty.rs29
-rw-r--r--library/test/src/formatters/terse.rs14
5 files changed, 110 insertions, 5 deletions
diff --git a/library/test/src/formatters/json.rs b/library/test/src/formatters/json.rs
index 95d2faf25..40976ec5e 100644
--- a/library/test/src/formatters/json.rs
+++ b/library/test/src/formatters/json.rs
@@ -2,7 +2,7 @@ use std::{borrow::Cow, io, io::prelude::Write};
use super::OutputFormatter;
use crate::{
- console::{ConsoleTestState, OutputLocation},
+ console::{ConsoleTestDiscoveryState, ConsoleTestState, OutputLocation},
test_result::TestResult,
time,
types::TestDesc,
@@ -60,6 +60,56 @@ impl<T: Write> JsonFormatter<T> {
}
impl<T: Write> OutputFormatter for JsonFormatter<T> {
+ fn write_discovery_start(&mut self) -> io::Result<()> {
+ self.writeln_message(&format!(r#"{{ "type": "suite", "event": "discovery" }}"#))
+ }
+
+ fn write_test_discovered(&mut self, desc: &TestDesc, test_type: &str) -> io::Result<()> {
+ let TestDesc {
+ name,
+ ignore,
+ ignore_message,
+ #[cfg(not(bootstrap))]
+ source_file,
+ #[cfg(not(bootstrap))]
+ start_line,
+ #[cfg(not(bootstrap))]
+ start_col,
+ #[cfg(not(bootstrap))]
+ end_line,
+ #[cfg(not(bootstrap))]
+ end_col,
+ ..
+ } = desc;
+
+ #[cfg(bootstrap)]
+ let source_file = "";
+ #[cfg(bootstrap)]
+ let start_line = 0;
+ #[cfg(bootstrap)]
+ let start_col = 0;
+ #[cfg(bootstrap)]
+ let end_line = 0;
+ #[cfg(bootstrap)]
+ let end_col = 0;
+
+ self.writeln_message(&format!(
+ r#"{{ "type": "{test_type}", "event": "discovered", "name": "{}", "ignore": {ignore}, "ignore_message": "{}", "source_path": "{}", "start_line": {start_line}, "start_col": {start_col}, "end_line": {end_line}, "end_col": {end_col} }}"#,
+ EscapedString(name.as_slice()),
+ ignore_message.unwrap_or(""),
+ EscapedString(source_file),
+ ))
+ }
+
+ fn write_discovery_finish(&mut self, state: &ConsoleTestDiscoveryState) -> io::Result<()> {
+ let ConsoleTestDiscoveryState { tests, benchmarks, ignored, .. } = state;
+
+ let total = tests + benchmarks;
+ self.writeln_message(&format!(
+ r#"{{ "type": "suite", "event": "completed", "tests": {tests}, "benchmarks": {benchmarks}, "total": {total}, "ignored": {ignored} }}"#
+ ))
+ }
+
fn write_run_start(&mut self, test_count: usize, shuffle_seed: Option<u64>) -> io::Result<()> {
let shuffle_seed_json = if let Some(shuffle_seed) = shuffle_seed {
format!(r#", "shuffle_seed": {shuffle_seed}"#)
diff --git a/library/test/src/formatters/junit.rs b/library/test/src/formatters/junit.rs
index 7a40ce33c..2e07ce3c0 100644
--- a/library/test/src/formatters/junit.rs
+++ b/library/test/src/formatters/junit.rs
@@ -3,7 +3,7 @@ use std::time::Duration;
use super::OutputFormatter;
use crate::{
- console::{ConsoleTestState, OutputLocation},
+ console::{ConsoleTestDiscoveryState, ConsoleTestState, OutputLocation},
test_result::TestResult,
time,
types::{TestDesc, TestType},
@@ -27,6 +27,18 @@ impl<T: Write> JunitFormatter<T> {
}
impl<T: Write> OutputFormatter for JunitFormatter<T> {
+ fn write_discovery_start(&mut self) -> io::Result<()> {
+ Err(io::Error::new(io::ErrorKind::NotFound, "Not yet implemented!"))
+ }
+
+ fn write_test_discovered(&mut self, _desc: &TestDesc, _test_type: &str) -> io::Result<()> {
+ Err(io::Error::new(io::ErrorKind::NotFound, "Not yet implemented!"))
+ }
+
+ fn write_discovery_finish(&mut self, _state: &ConsoleTestDiscoveryState) -> io::Result<()> {
+ Err(io::Error::new(io::ErrorKind::NotFound, "Not yet implemented!"))
+ }
+
fn write_run_start(
&mut self,
_test_count: usize,
diff --git a/library/test/src/formatters/mod.rs b/library/test/src/formatters/mod.rs
index cb67b6491..bc6ffebc1 100644
--- a/library/test/src/formatters/mod.rs
+++ b/library/test/src/formatters/mod.rs
@@ -1,7 +1,7 @@
use std::{io, io::prelude::Write};
use crate::{
- console::ConsoleTestState,
+ console::{ConsoleTestDiscoveryState, ConsoleTestState},
test_result::TestResult,
time,
types::{TestDesc, TestName},
@@ -18,6 +18,10 @@ pub(crate) use self::pretty::PrettyFormatter;
pub(crate) use self::terse::TerseFormatter;
pub(crate) trait OutputFormatter {
+ fn write_discovery_start(&mut self) -> io::Result<()>;
+ fn write_test_discovered(&mut self, desc: &TestDesc, test_type: &str) -> io::Result<()>;
+ fn write_discovery_finish(&mut self, state: &ConsoleTestDiscoveryState) -> io::Result<()>;
+
fn write_run_start(&mut self, test_count: usize, shuffle_seed: Option<u64>) -> io::Result<()>;
fn write_test_start(&mut self, desc: &TestDesc) -> io::Result<()>;
fn write_timeout(&mut self, desc: &TestDesc) -> io::Result<()>;
diff --git a/library/test/src/formatters/pretty.rs b/library/test/src/formatters/pretty.rs
index 247778e51..22654a340 100644
--- a/library/test/src/formatters/pretty.rs
+++ b/library/test/src/formatters/pretty.rs
@@ -3,7 +3,7 @@ use std::{io, io::prelude::Write};
use super::OutputFormatter;
use crate::{
bench::fmt_bench_samples,
- console::{ConsoleTestState, OutputLocation},
+ console::{ConsoleTestDiscoveryState, ConsoleTestState, OutputLocation},
term,
test_result::TestResult,
time,
@@ -181,6 +181,33 @@ impl<T: Write> PrettyFormatter<T> {
}
impl<T: Write> OutputFormatter for PrettyFormatter<T> {
+ fn write_discovery_start(&mut self) -> io::Result<()> {
+ Ok(())
+ }
+
+ fn write_test_discovered(&mut self, desc: &TestDesc, test_type: &str) -> io::Result<()> {
+ self.write_plain(format!("{}: {test_type}\n", desc.name))
+ }
+
+ fn write_discovery_finish(&mut self, state: &ConsoleTestDiscoveryState) -> io::Result<()> {
+ fn plural(count: usize, s: &str) -> String {
+ match count {
+ 1 => format!("1 {s}"),
+ n => format!("{n} {s}s"),
+ }
+ }
+
+ if state.tests != 0 || state.benchmarks != 0 {
+ self.write_plain("\n")?;
+ }
+
+ self.write_plain(format!(
+ "{}, {}\n",
+ plural(state.tests, "test"),
+ plural(state.benchmarks, "benchmark")
+ ))
+ }
+
fn write_run_start(&mut self, test_count: usize, shuffle_seed: Option<u64>) -> io::Result<()> {
let noun = if test_count != 1 { "tests" } else { "test" };
let shuffle_seed_msg = if let Some(shuffle_seed) = shuffle_seed {
diff --git a/library/test/src/formatters/terse.rs b/library/test/src/formatters/terse.rs
index a431acfbc..2931ca6ea 100644
--- a/library/test/src/formatters/terse.rs
+++ b/library/test/src/formatters/terse.rs
@@ -3,7 +3,7 @@ use std::{io, io::prelude::Write};
use super::OutputFormatter;
use crate::{
bench::fmt_bench_samples,
- console::{ConsoleTestState, OutputLocation},
+ console::{ConsoleTestDiscoveryState, ConsoleTestState, OutputLocation},
term,
test_result::TestResult,
time,
@@ -167,6 +167,18 @@ impl<T: Write> TerseFormatter<T> {
}
impl<T: Write> OutputFormatter for TerseFormatter<T> {
+ fn write_discovery_start(&mut self) -> io::Result<()> {
+ Ok(())
+ }
+
+ fn write_test_discovered(&mut self, desc: &TestDesc, test_type: &str) -> io::Result<()> {
+ self.write_plain(format!("{}: {test_type}\n", desc.name))
+ }
+
+ fn write_discovery_finish(&mut self, _state: &ConsoleTestDiscoveryState) -> io::Result<()> {
+ Ok(())
+ }
+
fn write_run_start(&mut self, test_count: usize, shuffle_seed: Option<u64>) -> io::Result<()> {
self.total_test_count = test_count;
let noun = if test_count != 1 { "tests" } else { "test" };