summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-06-06 08:37:13 -0400
committerGitHub <noreply@github.com>2024-06-06 08:37:13 -0400
commite5b2c5ebb89b962faec2937b3befa01ced90c579 (patch)
treee7e06f1391ddb71da97b5c6910ea2eeab0fe20ea
parent4d531bf229069f28b96c53c7c0f30f068b410382 (diff)
chore: support `-- --nocapture` in the spec tests (#24113)
-rw-r--r--tests/specs/README.md7
-rw-r--r--tests/specs/mod.rs14
-rw-r--r--tests/specs/schema.json3
-rw-r--r--tests/util/server/src/builders.rs16
4 files changed, 31 insertions, 9 deletions
diff --git a/tests/specs/README.md b/tests/specs/README.md
index bd3430f05..29c83ec12 100644
--- a/tests/specs/README.md
+++ b/tests/specs/README.md
@@ -26,6 +26,13 @@ Or just the following, though it might run other tests:
cargo test test_name
```
+To run showing the output of every test use `-- --nocapture` (note: this will
+cause tests to run sequentially instead of in parallel):
+
+```
+cargo test test_name -- --nocapture
+```
+
## `__test__.json` file
This file describes the test(s) to execute and the steps to execute. A basic
diff --git a/tests/specs/mod.rs b/tests/specs/mod.rs
index 3a52ab29e..c46969f4e 100644
--- a/tests/specs/mod.rs
+++ b/tests/specs/mod.rs
@@ -19,6 +19,7 @@ use file_test_runner::collection::CollectedTest;
use file_test_runner::collection::CollectedTestCategory;
use file_test_runner::SubTestResult;
use file_test_runner::TestResult;
+use once_cell::sync::Lazy;
use serde::Deserialize;
use test_util::tests_path;
use test_util::PathRef;
@@ -26,6 +27,9 @@ use test_util::TestContextBuilder;
const MANIFEST_FILE_NAME: &str = "__test__.jsonc";
+static NO_CAPTURE: Lazy<bool> =
+ Lazy::new(|| std::env::args().any(|arg| arg == "--nocapture"));
+
#[derive(Clone, Deserialize)]
#[serde(untagged)]
enum VecOrString {
@@ -178,7 +182,9 @@ pub fn main() {
let _http_guard = test_util::http_server();
file_test_runner::run_tests(
&root_category,
- file_test_runner::RunOptions { parallel: true },
+ file_test_runner::RunOptions {
+ parallel: !*NO_CAPTURE,
+ },
run_test,
);
}
@@ -373,6 +379,12 @@ fn run_step(
Some(command_name) => command.name(command_name),
None => command,
};
+ let command = match *NO_CAPTURE {
+ // deprecated is only to prevent use, so this is fine here
+ #[allow(deprecated)]
+ true => command.show_output(),
+ false => command,
+ };
let output = command.run();
if step.output.ends_with(".out") {
let test_output_path = cwd.join(&step.output);
diff --git a/tests/specs/schema.json b/tests/specs/schema.json
index d41babd19..bf57b4826 100644
--- a/tests/specs/schema.json
+++ b/tests/specs/schema.json
@@ -93,6 +93,9 @@
"additionalProperties": {
"type": "string"
}
+ },
+ "repeat": {
+ "type": "number"
}
}
}, {
diff --git a/tests/util/server/src/builders.rs b/tests/util/server/src/builders.rs
index bd2d02f3f..58563bd03 100644
--- a/tests/util/server/src/builders.rs
+++ b/tests/util/server/src/builders.rs
@@ -387,7 +387,7 @@ pub struct TestCommandBuilder {
args_text: String,
args_vec: Vec<String>,
split_output: bool,
- debug_output: bool,
+ show_output: bool,
}
impl TestCommandBuilder {
@@ -407,7 +407,7 @@ impl TestCommandBuilder {
command_name: "deno".to_string(),
args_text: "".to_string(),
args_vec: Default::default(),
- debug_output: false,
+ show_output: false,
}
}
@@ -489,8 +489,8 @@ impl TestCommandBuilder {
/// Not deprecated, this is just here so you don't accidentally
/// commit code with this enabled.
#[deprecated]
- pub fn debug_output(mut self) -> Self {
- self.debug_output = true;
+ pub fn show_output(mut self) -> Self {
+ self.show_output = true;
self
}
@@ -662,15 +662,15 @@ impl TestCommandBuilder {
let (stderr_reader, stderr_writer) = pipe().unwrap();
command.stdout(stdout_writer);
command.stderr(stderr_writer);
- let debug_output = self.debug_output;
+ let show_output = self.show_output;
(
None,
Some((
std::thread::spawn(move || {
- read_pipe_to_string(stdout_reader, debug_output)
+ read_pipe_to_string(stdout_reader, show_output)
}),
std::thread::spawn(move || {
- read_pipe_to_string(stderr_reader, debug_output)
+ read_pipe_to_string(stderr_reader, show_output)
}),
)),
)
@@ -695,7 +695,7 @@ impl TestCommandBuilder {
drop(command);
let combined = combined_reader.map(|pipe| {
- sanitize_output(read_pipe_to_string(pipe, self.debug_output), &args)
+ sanitize_output(read_pipe_to_string(pipe, self.show_output), &args)
});
let status = process.wait().unwrap();