summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/integration/cert_tests.rs119
-rw-r--r--cli/tests/integration/compile_tests.rs7
-rw-r--r--cli/tests/integration/eval_tests.rs4
-rw-r--r--cli/tests/integration/flags_tests.rs13
-rw-r--r--cli/tests/integration/fmt_tests.rs29
-rw-r--r--cli/tests/integration/inspector_tests.rs151
-rw-r--r--cli/tests/integration/js_unit_tests.rs7
-rw-r--r--cli/tests/integration/lsp_tests.rs4
-rw-r--r--cli/tests/integration/node_unit_tests.rs7
-rw-r--r--cli/tests/integration/npm_tests.rs43
-rw-r--r--cli/tests/integration/run_tests.rs289
-rw-r--r--cli/tests/integration/vendor_tests.rs34
-rw-r--r--cli/tests/integration/watcher_tests.rs104
13 files changed, 304 insertions, 507 deletions
diff --git a/cli/tests/integration/cert_tests.rs b/cli/tests/integration/cert_tests.rs
index f53ce9cee..4ccc38809 100644
--- a/cli/tests/integration/cert_tests.rs
+++ b/cli/tests/integration/cert_tests.rs
@@ -7,10 +7,8 @@ use lsp_types::Url;
use std::io::BufReader;
use std::io::Cursor;
use std::io::Read;
-use std::process::Command;
use std::sync::Arc;
use test_util as util;
-use test_util::TempDir;
use util::TestContext;
itest_flaky!(cafile_url_imports {
@@ -125,29 +123,29 @@ fn cafile_compile() {
#[flaky_test::flaky_test]
fn cafile_install_remote_module() {
- let _g = util::http_server();
- let temp_dir = TempDir::new();
+ let context = TestContext::with_http_server();
+ let temp_dir = context.temp_dir();
let bin_dir = temp_dir.path().join("bin");
- std::fs::create_dir(&bin_dir).unwrap();
- let deno_dir = TempDir::new();
+ bin_dir.create_dir_all();
let cafile = util::testdata_path().join("tls/RootCA.pem");
- let install_output = Command::new(util::deno_exe_path())
- .env("DENO_DIR", deno_dir.path())
- .current_dir(util::testdata_path())
- .arg("install")
- .arg("--cert")
- .arg(cafile)
- .arg("--root")
- .arg(temp_dir.path())
- .arg("-n")
- .arg("echo_test")
- .arg("https://localhost:5545/echo.ts")
- .output()
- .expect("Failed to spawn script");
- println!("{}", std::str::from_utf8(&install_output.stdout).unwrap());
- eprintln!("{}", std::str::from_utf8(&install_output.stderr).unwrap());
- assert!(install_output.status.success());
+ let install_output = context
+ .new_command()
+ .args_vec([
+ "install",
+ "--cert",
+ &cafile.to_string_lossy(),
+ "--root",
+ &temp_dir.path().to_string_lossy(),
+ "-n",
+ "echo_test",
+ "https://localhost:5545/echo.ts",
+ ])
+ .split_output()
+ .run();
+ println!("{}", install_output.stdout());
+ eprintln!("{}", install_output.stderr());
+ install_output.assert_exit_code(0);
let mut echo_test_path = bin_dir.join("echo_test");
if cfg!(windows) {
@@ -155,61 +153,52 @@ fn cafile_install_remote_module() {
}
assert!(echo_test_path.exists());
- let output = Command::new(echo_test_path)
- .current_dir(temp_dir.path())
- .arg("foo")
+ let output = context
+ .new_command()
+ .name(echo_test_path)
+ .args("foo")
.env("PATH", util::target_dir())
- .output()
- .expect("failed to spawn script");
- let stdout = std::str::from_utf8(&output.stdout).unwrap().trim();
- assert!(stdout.ends_with("foo"));
+ .run();
+ output.assert_matches_text("[WILDCARD]foo");
}
#[flaky_test::flaky_test]
fn cafile_bundle_remote_exports() {
- let _g = util::http_server();
+ let context = TestContext::with_http_server();
// First we have to generate a bundle of some remote module that has exports.
let mod1 = "https://localhost:5545/subdir/mod1.ts";
let cafile = util::testdata_path().join("tls/RootCA.pem");
- let t = TempDir::new();
+ let t = context.temp_dir();
let bundle = t.path().join("mod1.bundle.js");
- let mut deno = util::deno_cmd()
- .current_dir(util::testdata_path())
- .arg("bundle")
- .arg("--cert")
- .arg(cafile)
- .arg(mod1)
- .arg(&bundle)
- .spawn()
- .expect("failed to spawn script");
- let status = deno.wait().expect("failed to wait for the child process");
- assert!(status.success());
+ context
+ .new_command()
+ .args_vec([
+ "bundle",
+ "--cert",
+ &cafile.to_string_lossy(),
+ mod1,
+ &bundle.to_string_lossy(),
+ ])
+ .run()
+ .skip_output_check()
+ .assert_exit_code(0);
+
assert!(bundle.is_file());
// Now we try to use that bundle from another module.
let test = t.path().join("test.js");
- std::fs::write(
- &test,
- "
- import { printHello3 } from \"./mod1.bundle.js\";
- printHello3(); ",
- )
- .expect("error writing file");
-
- let output = util::deno_cmd()
- .current_dir(util::testdata_path())
- .arg("run")
- .arg("--check")
- .arg(&test)
- .output()
- .expect("failed to spawn script");
- // check the output of the test.ts program.
- assert!(std::str::from_utf8(&output.stdout)
- .unwrap()
- .trim()
- .ends_with("Hello"));
- assert_eq!(output.stderr, b"");
+ test.write(
+ "import { printHello3 } from \"./mod1.bundle.js\";
+printHello3();",
+ );
+
+ context
+ .new_command()
+ .args_vec(["run", "--quiet", "--check", &test.to_string_lossy()])
+ .run()
+ .assert_matches_text("[WILDCARD]Hello\n")
+ .assert_exit_code(0);
}
#[tokio::test]
@@ -223,7 +212,7 @@ async fn listen_tls_alpn() {
.arg("--allow-read")
.arg("./cert/listen_tls_alpn.ts")
.arg("4504")
- .stdout(std::process::Stdio::piped())
+ .stdout_piped()
.spawn()
.unwrap();
let stdout = child.stdout.as_mut().unwrap();
@@ -272,7 +261,7 @@ async fn listen_tls_alpn_fail() {
.arg("--allow-read")
.arg("./cert/listen_tls_alpn_fail.ts")
.arg("4505")
- .stdout(std::process::Stdio::piped())
+ .stdout_piped()
.spawn()
.unwrap();
let stdout = child.stdout.as_mut().unwrap();
diff --git a/cli/tests/integration/compile_tests.rs b/cli/tests/integration/compile_tests.rs
index 591d38d3d..78249079d 100644
--- a/cli/tests/integration/compile_tests.rs
+++ b/cli/tests/integration/compile_tests.rs
@@ -1,6 +1,5 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
-use std::fs::File;
use test_util as util;
use util::assert_contains;
use util::assert_not_contains;
@@ -219,7 +218,7 @@ fn compile_with_file_exists_error() {
dir.path().join("args/")
};
let file_path = dir.path().join("args");
- File::create(&file_path).unwrap();
+ file_path.write("");
context
.new_command()
.args_vec([
@@ -294,9 +293,7 @@ fn compile_with_conflict_file_exists_error() {
exe
))
.assert_exit_code(1);
- assert!(std::fs::read(&exe)
- .unwrap()
- .eq(b"SHOULD NOT BE OVERWRITTEN"));
+ exe.assert_matches_text("SHOULD NOT BE OVERWRITTEN");
}
#[test]
diff --git a/cli/tests/integration/eval_tests.rs b/cli/tests/integration/eval_tests.rs
index 99a0d674f..daf1d8561 100644
--- a/cli/tests/integration/eval_tests.rs
+++ b/cli/tests/integration/eval_tests.rs
@@ -8,7 +8,7 @@ fn eval_p() {
.arg("eval")
.arg("-p")
.arg("1+2")
- .stdout(std::process::Stdio::piped())
+ .stdout_piped()
.spawn()
.unwrap()
.wait_with_output()
@@ -28,7 +28,7 @@ fn eval_randomness() {
.arg("eval")
.arg("-p")
.arg("Math.random()")
- .stdout(std::process::Stdio::piped())
+ .stdout_piped()
.spawn()
.unwrap()
.wait_with_output()
diff --git a/cli/tests/integration/flags_tests.rs b/cli/tests/integration/flags_tests.rs
index 695283aca..89a8978dd 100644
--- a/cli/tests/integration/flags_tests.rs
+++ b/cli/tests/integration/flags_tests.rs
@@ -1,7 +1,7 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
-use std::process::Stdio;
use test_util as util;
+use util::assert_contains;
#[test]
fn help_flag() {
@@ -20,14 +20,9 @@ fn help_output() {
let output = util::deno_cmd()
.current_dir(util::testdata_path())
.arg("--help")
- .stdout(Stdio::piped())
- .spawn()
- .unwrap()
- .wait_with_output()
- .unwrap();
+ .run();
- assert!(output.status.success());
- let stdout = std::str::from_utf8(&output.stdout).unwrap();
+ let stdout = output.combined_output();
let subcommand_descriptions = vec![
"Run a JavaScript or TypeScript program",
"Run benchmarks",
@@ -56,7 +51,7 @@ fn help_output() {
];
for description in subcommand_descriptions {
- assert!(stdout.contains(description));
+ assert_contains!(stdout, description);
}
}
diff --git a/cli/tests/integration/fmt_tests.rs b/cli/tests/integration/fmt_tests.rs
index dd9e50357..edebedc27 100644
--- a/cli/tests/integration/fmt_tests.rs
+++ b/cli/tests/integration/fmt_tests.rs
@@ -1,7 +1,6 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
use test_util as util;
-use test_util::TempDir;
use util::assert_contains;
use util::PathRef;
use util::TestContext;
@@ -91,25 +90,17 @@ fn fmt_test() {
}
#[test]
-fn fmt_stdin_error() {
- use std::io::Write;
- let mut deno = util::deno_cmd()
+fn fmt_stdin_syntax_error() {
+ let output = util::deno_cmd()
.current_dir(util::testdata_path())
.arg("fmt")
.arg("-")
- .stdin(std::process::Stdio::piped())
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
- .spawn()
- .unwrap();
- let stdin = deno.stdin.as_mut().unwrap();
- let invalid_js = b"import { example }";
- stdin.write_all(invalid_js).unwrap();
- let output = deno.wait_with_output().unwrap();
- // Error message might change. Just check stdout empty, stderr not.
- assert!(output.stdout.is_empty());
- assert!(!output.stderr.is_empty());
- assert!(!output.status.success());
+ .set_stdin_text("import { example }")
+ .split_output()
+ .run();
+ assert!(output.stdout().is_empty());
+ assert!(!output.stderr().is_empty());
+ output.assert_exit_code(1);
}
#[test]
@@ -132,7 +123,8 @@ fn fmt_auto_ignore_git_and_node_modules() {
bad_json_path.write("bad json\n");
}
- let temp_dir = TempDir::new();
+ let context = TestContext::default();
+ let temp_dir = context.temp_dir();
let t = temp_dir.path().join("target");
let nest_git = t.join("nest").join(".git");
let git_dir = t.join(".git");
@@ -147,7 +139,6 @@ fn fmt_auto_ignore_git_and_node_modules() {
create_bad_json(nest_node_modules);
create_bad_json(node_modules_dir);
- let context = TestContext::default();
let output = context
.new_command()
.cwd(t)
diff --git a/cli/tests/integration/inspector_tests.rs b/cli/tests/integration/inspector_tests.rs
index e593c3b29..36d469196 100644
--- a/cli/tests/integration/inspector_tests.rs
+++ b/cli/tests/integration/inspector_tests.rs
@@ -18,13 +18,12 @@ use hyper::Response;
use std::io::BufRead;
use std::time::Duration;
use test_util as util;
-use test_util::TempDir;
use tokio::net::TcpStream;
use tokio::time::timeout;
use url::Url;
use util::assert_starts_with;
-use util::http_server;
use util::DenoChild;
+use util::TestContextBuilder;
struct SpawnExecutor;
@@ -292,7 +291,7 @@ async fn inspector_connect() {
.arg("run")
.arg(inspect_flag_with_unique_port("--inspect"))
.arg(script)
- .stderr(std::process::Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap();
@@ -314,8 +313,7 @@ async fn inspector_break_on_first_line() {
.arg("run")
.arg(inspect_flag_with_unique_port("--inspect-brk"))
.arg(script)
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
@@ -398,8 +396,7 @@ async fn inspector_pause() {
.arg("run")
.arg(inspect_flag_with_unique_port("--inspect"))
.arg(script)
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
@@ -439,7 +436,7 @@ async fn inspector_port_collision() {
.arg("run")
.arg(&inspect_flag)
.arg(script.clone())
- .stderr(std::process::Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap();
@@ -453,7 +450,7 @@ async fn inspector_port_collision() {
.arg("run")
.arg(&inspect_flag)
.arg(script)
- .stderr(std::process::Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap();
@@ -478,8 +475,7 @@ async fn inspector_does_not_hang() {
.arg(inspect_flag_with_unique_port("--inspect-brk"))
.env("NO_COLOR", "1")
.arg(script)
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
@@ -569,8 +565,7 @@ async fn inspector_without_brk_runs_code() {
.arg("run")
.arg(inspect_flag_with_unique_port("--inspect"))
.arg(script)
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
@@ -598,8 +593,7 @@ async fn inspector_runtime_evaluate_does_not_crash() {
.arg("--allow-read")
.arg(inspect_flag_with_unique_port("--inspect"))
.stdin(std::process::Stdio::piped())
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
@@ -707,7 +701,7 @@ async fn inspector_json() {
.arg("run")
.arg(inspect_flag_with_unique_port("--inspect"))
.arg(script)
- .stderr(std::process::Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap();
@@ -756,7 +750,7 @@ async fn inspector_json_list() {
.arg("run")
.arg(inspect_flag_with_unique_port("--inspect"))
.arg(script)
- .stderr(std::process::Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap();
@@ -787,7 +781,7 @@ async fn inspector_connect_non_ws() {
.arg("run")
.arg(inspect_flag_with_unique_port("--inspect"))
.arg(script)
- .stderr(std::process::Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap();
@@ -813,8 +807,7 @@ async fn inspector_break_on_first_line_in_test() {
.arg(inspect_flag_with_unique_port("--inspect-brk"))
.arg(script)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
@@ -890,8 +883,7 @@ async fn inspector_with_ts_files() {
.arg("--check")
.arg(inspect_flag_with_unique_port("--inspect-brk"))
.arg(script)
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
@@ -1009,8 +1001,7 @@ async fn inspector_memory() {
.arg("run")
.arg(inspect_flag_with_unique_port("--inspect-brk"))
.arg(script)
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
@@ -1110,8 +1101,7 @@ async fn inspector_profile() {
.arg("run")
.arg(inspect_flag_with_unique_port("--inspect-brk"))
.arg(script)
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
@@ -1188,22 +1178,20 @@ async fn inspector_profile() {
#[ignore]
#[tokio::test]
async fn inspector_break_on_first_line_npm_esm() {
- let _server = http_server();
-
- let child = util::deno_cmd()
- .arg("run")
- .arg("--quiet")
- .arg(inspect_flag_with_unique_port("--inspect-brk"))
- .arg("npm:@denotest/bin/cli-esm")
- .arg("this")
- .arg("is")
- .arg("a")
- .arg("test")
- .envs(util::env_vars_for_npm_tests())
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
- .spawn()
- .unwrap();
+ let context = TestContextBuilder::for_npm().build();
+ let child = context
+ .new_command()
+ .args_vec([
+ "run",
+ "--quiet",
+ &inspect_flag_with_unique_port("--inspect-brk"),
+ "npm:@denotest/bin/cli-esm",
+ "this",
+ "is",
+ "a",
+ "test",
+ ])
+ .spawn_with_piped_output();
let mut tester = InspectorTester::create(child, ignore_script_parsed).await;
@@ -1258,21 +1246,20 @@ async fn inspector_break_on_first_line_npm_esm() {
#[ignore]
#[tokio::test]
async fn inspector_break_on_first_line_npm_cjs() {
- let _server = http_server();
- let child = util::deno_cmd()
- .arg("run")
- .arg("--quiet")
- .arg(inspect_flag_with_unique_port("--inspect-brk"))
- .arg("npm:@denotest/bin/cli-cjs")
- .arg("this")
- .arg("is")
- .arg("a")
- .arg("test")
- .envs(util::env_vars_for_npm_tests())
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
- .spawn()
- .unwrap();
+ let context = TestContextBuilder::for_npm().build();
+ let child = context
+ .new_command()
+ .args_vec([
+ "run",
+ "--quiet",
+ &inspect_flag_with_unique_port("--inspect-brk"),
+ "npm:@denotest/bin/cli-cjs",
+ "this",
+ "is",
+ "a",
+ "test",
+ ])
+ .spawn_with_piped_output();
let mut tester = InspectorTester::create(child, ignore_script_parsed).await;
@@ -1328,19 +1315,17 @@ async fn inspector_break_on_first_line_npm_cjs() {
#[tokio::test]
async fn inspector_error_with_npm_import() {
let script = util::testdata_path().join("inspector/error_with_npm_import.js");
- let _server = http_server();
-
- let child = util::deno_cmd()
- .arg("run")
- .arg("--quiet")
- .arg("-A")
- .arg(inspect_flag_with_unique_port("--inspect-brk"))
- .arg(script)
- .envs(util::env_vars_for_npm_tests())
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
- .spawn()
- .unwrap();
+ let context = TestContextBuilder::for_npm().build();
+ let child = context
+ .new_command()
+ .args_vec([
+ "run",
+ "--quiet",
+ "-A",
+ &inspect_flag_with_unique_port("--inspect-brk"),
+ &script.to_string_lossy(),
+ ])
+ .spawn_with_piped_output();
let mut tester = InspectorTester::create(child, ignore_script_parsed).await;
@@ -1392,19 +1377,19 @@ async fn inspector_error_with_npm_import() {
#[tokio::test]
async fn inspector_wait() {
let script = util::testdata_path().join("inspector/inspect_wait.js");
- let temp_dir = TempDir::new();
-
- let child = util::deno_cmd()
- .current_dir(temp_dir.path())
- .arg("run")
- .arg("--quiet")
- .arg("-A")
- .arg(inspect_flag_with_unique_port("--inspect-wait"))
- .arg(script)
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
- .spawn()
- .unwrap();
+ let test_context = TestContextBuilder::new().use_temp_cwd().build();
+ let temp_dir = test_context.temp_dir();
+
+ let child = test_context
+ .new_command()
+ .args_vec([
+ "run",
+ "--quiet",
+ "-A",
+ &inspect_flag_with_unique_port("--inspect-wait"),
+ &script.to_string_lossy(),
+ ])
+ .spawn_with_piped_output();
tokio::time::sleep(tokio::time::Duration::from_millis(300)).await;
assert!(!temp_dir.path().join("hello.txt").exists());
diff --git a/cli/tests/integration/js_unit_tests.rs b/cli/tests/integration/js_unit_tests.rs
index 33d79236c..d4a56b63e 100644
--- a/cli/tests/integration/js_unit_tests.rs
+++ b/cli/tests/integration/js_unit_tests.rs
@@ -1,7 +1,6 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
use std::io::BufRead;
use std::io::BufReader;
-use std::process::Stdio;
use std::time::Duration;
use std::time::Instant;
use test_util as util;
@@ -112,8 +111,7 @@ util::unit_test_factory!(
fn js_unit_test(test: String) {
let _g = util::http_server();
- let mut deno = util::deno_cmd();
- let deno = deno
+ let deno = util::deno_cmd()
.current_dir(util::root_path())
.arg("test")
.arg("--unstable")
@@ -130,8 +128,7 @@ fn js_unit_test(test: String) {
let mut deno = deno
.arg("-A")
.arg(util::tests_path().join("unit").join(format!("{test}.ts")))
- .stderr(Stdio::piped())
- .stdout(Stdio::piped())
+ .piped_output()
.spawn()
.expect("failed to spawn script");
diff --git a/cli/tests/integration/lsp_tests.rs b/cli/tests/integration/lsp_tests.rs
index 92b53b3b1..8ec1bdd41 100644
--- a/cli/tests/integration/lsp_tests.rs
+++ b/cli/tests/integration/lsp_tests.rs
@@ -8,7 +8,6 @@ use deno_core::serde_json::Value;
use deno_core::url::Url;
use pretty_assertions::assert_eq;
use std::fs;
-use std::process::Stdio;
use test_util::assert_starts_with;
use test_util::deno_cmd_with_deno_dir;
use test_util::env_vars_for_npm_tests;
@@ -7130,8 +7129,7 @@ fn lsp_npm_specifier_unopened_file() {
.arg("--quiet")
.arg("other.ts")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
diff --git a/cli/tests/integration/node_unit_tests.rs b/cli/tests/integration/node_unit_tests.rs
index 5489a7255..9aad274e3 100644
--- a/cli/tests/integration/node_unit_tests.rs
+++ b/cli/tests/integration/node_unit_tests.rs
@@ -1,7 +1,6 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
use std::io::BufRead;
use std::io::BufReader;
-use std::process::Stdio;
use std::time::Duration;
use std::time::Instant;
use test_util as util;
@@ -91,8 +90,7 @@ util::unit_test_factory!(
fn node_unit_test(test: String) {
let _g = util::http_server();
- let mut deno = util::deno_cmd();
- let mut deno = deno
+ let mut deno = util::deno_cmd()
.current_dir(util::root_path())
.arg("test")
.arg("--unstable")
@@ -112,8 +110,7 @@ fn node_unit_test(test: String) {
.join(format!("{test}.ts")),
)
.envs(env_vars_for_npm_tests())
- .stderr(Stdio::piped())
- .stdout(Stdio::piped())
+ .piped_output()
.spawn()
.expect("failed to spawn script");
diff --git a/cli/tests/integration/npm_tests.rs b/cli/tests/integration/npm_tests.rs
index 95ffd71cd..f49e3e988 100644
--- a/cli/tests/integration/npm_tests.rs
+++ b/cli/tests/integration/npm_tests.rs
@@ -4,7 +4,6 @@ use deno_core::serde_json;
use deno_core::serde_json::json;
use deno_core::serde_json::Value;
use pretty_assertions::assert_eq;
-use std::process::Stdio;
use test_util as util;
use util::assert_contains;
use util::env_vars_for_npm_tests;
@@ -508,8 +507,7 @@ fn cached_only_after_first_run() {
.arg("npm/cached_only_after_first_run/main1.ts")
.env("NO_COLOR", "1")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -528,8 +526,7 @@ fn cached_only_after_first_run() {
.arg("npm/cached_only_after_first_run/main2.ts")
.env("NO_COLOR", "1")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -551,8 +548,7 @@ fn cached_only_after_first_run() {
.arg("npm/cached_only_after_first_run/main1.ts")
.env("NO_COLOR", "1")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
@@ -578,8 +574,7 @@ fn reload_flag() {
.arg("npm/reload/main.ts")
.env("NO_COLOR", "1")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -598,8 +593,7 @@ fn reload_flag() {
.arg("npm/reload/main.ts")
.env("NO_COLOR", "1")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -618,8 +612,7 @@ fn reload_flag() {
.arg("npm/reload/main.ts")
.env("NO_COLOR", "1")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -638,8 +631,7 @@ fn reload_flag() {
.arg("npm/reload/main.ts")
.env("NO_COLOR", "1")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -658,8 +650,7 @@ fn reload_flag() {
.arg("npm/reload/main.ts")
.env("NO_COLOR", "1")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -685,8 +676,7 @@ fn no_npm_after_first_run() {
.arg("npm/no_npm_after_first_run/main1.ts")
.env("NO_COLOR", "1")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -707,8 +697,7 @@ fn no_npm_after_first_run() {
.arg("npm/no_npm_after_first_run/main1.ts")
.env("NO_COLOR", "1")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -727,8 +716,7 @@ fn no_npm_after_first_run() {
.arg("npm/no_npm_after_first_run/main1.ts")
.env("NO_COLOR", "1")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -1273,8 +1261,7 @@ fn lock_file_missing_top_level_package() {
.arg("-A")
.arg("main.ts")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -1511,8 +1498,7 @@ fn lock_file_lock_write() {
.arg("--quiet")
.arg("npm:cowsay@1.5.0")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -1563,8 +1549,7 @@ fn auto_discover_lock_file() {
.arg("npm:@denotest/bin/cli-esm")
.arg("test")
.envs(env_vars_for_npm_tests())
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
diff --git a/cli/tests/integration/run_tests.rs b/cli/tests/integration/run_tests.rs
index 306d4df67..ac379d7fc 100644
--- a/cli/tests/integration/run_tests.rs
+++ b/cli/tests/integration/run_tests.rs
@@ -331,8 +331,7 @@ itest!(webstorage_serialization {
fn webstorage_location_shares_origin() {
let deno_dir = util::new_deno_dir();
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&deno_dir);
- let output = deno_cmd
+ let output = util::deno_cmd_with_deno_dir(&deno_dir)
.current_dir(util::testdata_path())
.arg("run")
.arg("--location")
@@ -346,8 +345,7 @@ fn webstorage_location_shares_origin() {
assert!(output.status.success());
assert_eq!(output.stdout, b"Storage { length: 0 }\n");
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&deno_dir);
- let output = deno_cmd
+ let output = util::deno_cmd_with_deno_dir(&deno_dir)
.current_dir(util::testdata_path())
.arg("run")
.arg("--location")
@@ -366,139 +364,69 @@ fn webstorage_location_shares_origin() {
// storage persists against unique configuration files.
#[test]
fn webstorage_config_file() {
- let deno_dir = util::new_deno_dir();
+ let context = TestContext::default();
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&deno_dir);
- let output = deno_cmd
- .current_dir(util::testdata_path())
- .arg("run")
- .arg("--config")
- .arg("run/webstorage/config_a.jsonc")
- .arg("run/webstorage/fixture.ts")
- .stdout(Stdio::piped())
- .spawn()
- .unwrap()
- .wait_with_output()
- .unwrap();
- assert!(output.status.success());
- assert_eq!(output.stdout, b"Storage { length: 0 }\n");
+ context
+ .new_command()
+ .args(
+ "run --config run/webstorage/config_a.jsonc run/webstorage/fixture.ts",
+ )
+ .run()
+ .assert_matches_text("Storage { length: 0 }\n");
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&deno_dir);
- let output = deno_cmd
- .current_dir(util::testdata_path())
- .arg("run")
- .arg("--config")
- .arg("run/webstorage/config_b.jsonc")
- .arg("run/webstorage/logger.ts")
- .stdout(Stdio::piped())
- .spawn()
- .unwrap()
- .wait_with_output()
- .unwrap();
- assert!(output.status.success());
- assert_eq!(output.stdout, b"Storage { length: 0 }\n");
+ context
+ .new_command()
+ .args("run --config run/webstorage/config_b.jsonc run/webstorage/logger.ts")
+ .run()
+ .assert_matches_text("Storage { length: 0 }\n");
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&deno_dir);
- let output = deno_cmd
- .current_dir(util::testdata_path())
- .arg("run")
- .arg("--config")
- .arg("run/webstorage/config_a.jsonc")
- .arg("run/webstorage/logger.ts")
- .stdout(Stdio::piped())
- .spawn()
- .unwrap()
- .wait_with_output()
- .unwrap();
- assert!(output.status.success());
- assert_eq!(output.stdout, b"Storage { length: 1, hello: \"deno\" }\n");
+ context
+ .new_command()
+ .args("run --config run/webstorage/config_a.jsonc run/webstorage/logger.ts")
+ .run()
+ .assert_matches_text("Storage { length: 1, hello: \"deno\" }\n");
}
// tests to ensure `--config` does not effect persisted storage when a
// `--location` is provided.
#[test]
fn webstorage_location_precedes_config() {
- let deno_dir = util::new_deno_dir();
+ let context = TestContext::default();
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&deno_dir);
- let output = deno_cmd
- .current_dir(util::testdata_path())
- .arg("run")
- .arg("--location")
- .arg("https://example.com/a.ts")
- .arg("--config")
- .arg("run/webstorage/config_a.jsonc")
- .arg("run/webstorage/fixture.ts")
- .stdout(Stdio::piped())
- .spawn()
- .unwrap()
- .wait_with_output()
- .unwrap();
- assert!(output.status.success());
- assert_eq!(output.stdout, b"Storage { length: 0 }\n");
+ context.new_command()
+ .args("run --location https://example.com/a.ts --config run/webstorage/config_a.jsonc run/webstorage/fixture.ts")
+ .run()
+ .assert_matches_text("Storage { length: 0 }\n");
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&deno_dir);
- let output = deno_cmd
- .current_dir(util::testdata_path())
- .arg("run")
- .arg("--location")
- .arg("https://example.com/b.ts")
- .arg("--config")
- .arg("run/webstorage/config_b.jsonc")
- .arg("run/webstorage/logger.ts")
- .stdout(Stdio::piped())
- .spawn()
- .unwrap()
- .wait_with_output()
- .unwrap();
- assert!(output.status.success());
- assert_eq!(output.stdout, b"Storage { length: 1, hello: \"deno\" }\n");
+ context.new_command()
+ .args("run --location https://example.com/b.ts --config run/webstorage/config_b.jsonc run/webstorage/logger.ts")
+ .run()
+ .assert_matches_text("Storage { length: 1, hello: \"deno\" }\n");
}
// test to ensure that when there isn't a configuration or location, that the
// main module is used to determine how to persist storage data.
#[test]
fn webstorage_main_module() {
- let deno_dir = util::new_deno_dir();
+ let context = TestContext::default();
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&deno_dir);
- let output = deno_cmd
- .current_dir(util::testdata_path())
- .arg("run")
- .arg("run/webstorage/fixture.ts")
- .stdout(Stdio::piped())
- .spawn()
- .unwrap()
- .wait_with_output()
- .unwrap();
- assert!(output.status.success());
- assert_eq!(output.stdout, b"Storage { length: 0 }\n");
+ context
+ .new_command()
+ .args("run run/webstorage/fixture.ts")
+ .run()
+ .assert_matches_text("Storage { length: 0 }\n");
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&deno_dir);
- let output = deno_cmd
- .current_dir(util::testdata_path())
- .arg("run")
- .arg("run/webstorage/logger.ts")
- .stdout(Stdio::piped())
- .spawn()
- .unwrap()
- .wait_with_output()
- .unwrap();
- assert!(output.status.success());
- assert_eq!(output.stdout, b"Storage { length: 0 }\n");
+ context
+ .new_command()
+ .args("run run/webstorage/logger.ts")
+ .run()
+ .assert_matches_text("Storage { length: 0 }\n");
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&deno_dir);
- let output = deno_cmd
- .current_dir(util::testdata_path())
- .arg("run")
- .arg("run/webstorage/fixture.ts")
- .stdout(Stdio::piped())
- .spawn()
- .unwrap()
- .wait_with_output()
- .unwrap();
- assert!(output.status.success());
- assert_eq!(output.stdout, b"Storage { length: 1, hello: \"deno\" }\n");
+ context
+ .new_command()
+ .args("run run/webstorage/fixture.ts")
+ .run()
+ .assert_matches_text("Storage { length: 1, hello: \"deno\" }\n");
}
itest!(_075_import_local_query_hash {
@@ -2102,8 +2030,7 @@ fn no_validate_asm() {
.current_dir(util::testdata_path())
.arg("run")
.arg("run/no_validate_asm.js")
- .stderr(Stdio::piped())
- .stdout(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap()
.wait_with_output()
@@ -2146,7 +2073,7 @@ console.log("executing typescript");
.arg("--check")
.arg("-")
.stdin(std::process::Stdio::piped())
- .stdout(std::process::Stdio::piped())
+ .stdout_piped()
.spawn()
.unwrap();
let stdin = p.stdin.as_mut().unwrap();
@@ -2171,7 +2098,7 @@ console.log("executing javascript");
.arg("--check")
.arg("-")
.stdin(std::process::Stdio::piped())
- .stdout(std::process::Stdio::piped())
+ .stdout_piped()
.spawn()
.unwrap();
let stdin = p.stdin.as_mut().unwrap();
@@ -2290,7 +2217,7 @@ fn rust_log() {
.current_dir(util::testdata_path())
.arg("run")
.arg("run/001_hello.js")
- .stderr(Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap()
.wait_with_output()
@@ -2304,7 +2231,7 @@ fn rust_log() {
.arg("run")
.arg("run/001_hello.js")
.env("RUST_LOG", "debug")
- .stderr(Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap()
.wait_with_output()
@@ -2315,36 +2242,24 @@ fn rust_log() {
#[test]
fn dont_cache_on_check_fail() {
- let deno_dir = util::new_deno_dir();
-
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&deno_dir);
- let output = deno_cmd
- .current_dir(util::testdata_path())
- .arg("run")
- .arg("--check=all")
- .arg("--reload")
- .arg("run/error_003_typescript.ts")
- .stderr(Stdio::piped())
- .spawn()
- .unwrap()
- .wait_with_output()
- .unwrap();
- assert!(!output.status.success());
- assert!(!output.stderr.is_empty());
+ let context = TestContext::default();
+ let output = context
+ .new_command()
+ .args("run --check=all --reload run/error_003_typescript.ts")
+ .split_output()
+ .run();
+ assert!(!output.stderr().is_empty());
+ output.skip_stdout_check();
+ output.assert_exit_code(1);
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&deno_dir);
- let output = deno_cmd
- .current_dir(util::testdata_path())
- .arg("run")
- .arg("--check=all")
- .arg("run/error_003_typescript.ts")
- .stderr(Stdio::piped())
- .spawn()
- .unwrap()
- .wait_with_output()
- .unwrap();
- assert!(!output.status.success());
- assert!(!output.stderr.is_empty());
+ let output = context
+ .new_command()
+ .args("run --check=all run/error_003_typescript.ts")
+ .split_output()
+ .run();
+ assert!(!output.stderr().is_empty());
+ output.skip_stdout_check();
+ output.assert_exit_code(1);
}
mod permissions {
@@ -2998,9 +2913,8 @@ fn issue12740() {
let mod_dir = TempDir::new();
let mod1_path = mod_dir.path().join("mod1.ts");
let mod2_path = mod_dir.path().join("mod2.ts");
- let mut deno_cmd = util::deno_cmd();
- std::fs::write(&mod1_path, "").unwrap();
- let status = deno_cmd
+ mod1_path.write("");
+ let status = util::deno_cmd()
.current_dir(util::testdata_path())
.arg("run")
.arg(&mod1_path)
@@ -3011,9 +2925,9 @@ fn issue12740() {
.wait()
.unwrap();
assert!(status.success());
- std::fs::write(&mod1_path, "export { foo } from \"./mod2.ts\";").unwrap();
- std::fs::write(mod2_path, "(").unwrap();
- let status = deno_cmd
+ mod1_path.write("export { foo } from \"./mod2.ts\";");
+ mod2_path.write("(");
+ let status = util::deno_cmd()
.current_dir(util::testdata_path())
.arg("run")
.arg(&mod1_path)
@@ -3032,11 +2946,10 @@ fn issue12807() {
let mod_dir = TempDir::new();
let mod1_path = mod_dir.path().join("mod1.ts");
let mod2_path = mod_dir.path().join("mod2.ts");
- let mut deno_cmd = util::deno_cmd();
// With a fresh `DENO_DIR`, run a module with a dependency and a type error.
- std::fs::write(&mod1_path, "import './mod2.ts'; Deno.exit('0');").unwrap();
- std::fs::write(mod2_path, "console.log('Hello, world!');").unwrap();
- let status = deno_cmd
+ mod1_path.write("import './mod2.ts'; Deno.exit('0');");
+ mod2_path.write("console.log('Hello, world!');");
+ let status = util::deno_cmd()
.current_dir(util::testdata_path())
.arg("run")
.arg("--check")
@@ -3050,7 +2963,7 @@ fn issue12807() {
assert!(!status.success());
// Fix the type error and run again.
std::fs::write(&mod1_path, "import './mod2.ts'; Deno.exit(0);").unwrap();
- let status = deno_cmd
+ let status = util::deno_cmd()
.current_dir(util::testdata_path())
.arg("run")
.arg("--check")
@@ -3508,7 +3421,7 @@ fn check_local_then_remote() {
.arg("--check=all")
.arg("run/remote_type_error/main.ts")
.env("NO_COLOR", "1")
- .stderr(Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap()
.wait_with_output()
@@ -3598,20 +3511,18 @@ itest!(config_json_import {
#[test]
fn running_declaration_files() {
- let temp_dir = TempDir::new();
+ let context = TestContextBuilder::new().use_temp_cwd().build();
+ let temp_dir = context.temp_dir();
let files = vec!["file.d.ts", "file.d.cts", "file.d.mts"];
for file in files {
temp_dir.write(file, "");
- let mut deno_cmd = util::deno_cmd_with_deno_dir(&temp_dir);
- let output = deno_cmd
- .current_dir(temp_dir.path())
- .args(["run", file])
- .spawn()
- .unwrap()
- .wait_with_output()
- .unwrap();
- assert!(output.status.success());
+ context
+ .new_command()
+ .args_vec(["run", file])
+ .run()
+ .skip_output_check()
+ .assert_exit_code(0);
}
}
@@ -3846,8 +3757,7 @@ fn basic_auth_tokens() {
.current_dir(util::root_path())
.arg("run")
.arg("http://127.0.0.1:4554/run/001_hello.js")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap()
.wait_with_output()
@@ -3869,8 +3779,7 @@ fn basic_auth_tokens() {
.arg("run")
.arg("http://127.0.0.1:4554/run/001_hello.js")
.env("DENO_AUTH_TOKENS", "testuser123:testpassabc@127.0.0.1:4554")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap()
.wait_with_output()
@@ -3954,8 +3863,7 @@ async fn test_resolve_dns() {
.arg("--check")
.arg("--allow-net")
.arg("run/resolve_dns.ts")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap()
.wait_with_output()
@@ -3982,8 +3890,7 @@ async fn test_resolve_dns() {
.arg("--check")
.arg("--allow-net=127.0.0.1:4553")
.arg("run/resolve_dns.ts")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap()
.wait_with_output()
@@ -4012,8 +3919,7 @@ async fn test_resolve_dns() {
.arg("--check")
.arg("--allow-net=deno.land")
.arg("run/resolve_dns.ts")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap()
.wait_with_output()
@@ -4034,8 +3940,7 @@ async fn test_resolve_dns() {
.arg("run")
.arg("--check")
.arg("run/resolve_dns.ts")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap()
.wait_with_output()
@@ -4062,7 +3967,7 @@ async fn http2_request_url() {
.arg("--allow-read")
.arg("./run/http2_request_url.ts")
.arg("4506")
- .stdout(std::process::Stdio::piped())
+ .stdout_piped()
.spawn()
.unwrap();
let stdout = child.stdout.as_mut().unwrap();
@@ -4102,7 +4007,7 @@ fn set_raw_should_not_panic_on_no_tty() {
// stdin set to piped so it certainly does not refer to TTY
.stdin(std::process::Stdio::piped())
// stderr is piped so we can capture output.
- .stderr(std::process::Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap()
.wait_with_output()
@@ -4156,7 +4061,7 @@ fn broken_stdout() {
.arg("eval")
.arg("console.log(3.14)")
.stdout(writer)
- .stderr(std::process::Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap()
.wait_with_output()
@@ -4305,7 +4210,7 @@ async fn websocketstream_ping() {
.arg("--cert")
.arg(root_ca)
.arg(script)
- .stdout(std::process::Stdio::piped())
+ .stdout_piped()
.spawn()
.unwrap();
let server = tokio::net::TcpListener::bind("127.0.0.1:4513")
@@ -4350,7 +4255,7 @@ async fn websocket_server_multi_field_connection_header() {
.arg("--cert")
.arg(root_ca)
.arg(script)
- .stdout(std::process::Stdio::piped())
+ .stdout_piped()
.spawn()
.unwrap();
@@ -4405,7 +4310,7 @@ async fn websocket_server_idletimeout() {
.arg("--cert")
.arg(root_ca)
.arg(script)
- .stdout(std::process::Stdio::piped())
+ .stdout_piped()
.spawn()
.unwrap();
diff --git a/cli/tests/integration/vendor_tests.rs b/cli/tests/integration/vendor_tests.rs
index 94ab2ad5a..2bcf02610 100644
--- a/cli/tests/integration/vendor_tests.rs
+++ b/cli/tests/integration/vendor_tests.rs
@@ -5,7 +5,6 @@ use deno_core::serde_json::json;
use pretty_assertions::assert_eq;
use std::fmt::Write as _;
use std::path::PathBuf;
-use std::process::Stdio;
use test_util as util;
use test_util::TempDir;
use util::http_server;
@@ -24,7 +23,7 @@ fn output_dir_exists() {
.env("NO_COLOR", "1")
.arg("vendor")
.arg("mod.ts")
- .stderr(Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -46,7 +45,7 @@ fn output_dir_exists() {
.arg("--output")
.arg("vendor")
.arg("mod.ts")
- .stderr(Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -91,8 +90,7 @@ fn standard_test() {
.arg("--output")
.arg("vendor2")
.env("NO_COLOR", "1")
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -140,8 +138,7 @@ fn standard_test() {
.arg("--import-map")
.arg("vendor2/import_map.json")
.arg("my_app.ts")
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -178,8 +175,7 @@ fn import_map_output_dir() {
.arg("--import-map")
.arg("vendor/import_map.json")
.arg("my_app.ts")
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -210,8 +206,7 @@ fn remote_module_test() {
.env("NO_COLOR", "1")
.arg("vendor")
.arg("http://localhost:4545/vendor/query_reexport.ts")
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -272,7 +267,7 @@ fn existing_import_map_no_remote() {
.arg("mod.ts")
.arg("--import-map")
.arg(import_map_filename)
- .stderr(Stdio::piped())
+ .stderr_piped()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -345,8 +340,7 @@ fn existing_import_map_mixed_with_remote() {
.arg("vendor/import_map.json")
.arg("--output")
.arg("vendor2")
- .stderr(Stdio::piped())
- .stdout(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -434,8 +428,7 @@ fn dynamic_import() {
.arg("--import-map")
.arg("vendor/import_map.json")
.arg("mod.ts")
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -459,8 +452,7 @@ fn dynamic_non_analyzable_import() {
.arg("vendor")
.arg("--reload")
.arg("mod.ts")
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -502,8 +494,7 @@ fn update_existing_config_test() {
.arg("--output")
.arg("vendor2")
.env("NO_COLOR", "1")
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
@@ -527,8 +518,7 @@ fn update_existing_config_test() {
.arg("--check")
.arg("--quiet")
.arg("my_app.ts")
- .stdout(Stdio::piped())
- .stderr(Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let output = deno.wait_with_output().unwrap();
diff --git a/cli/tests/integration/watcher_tests.rs b/cli/tests/integration/watcher_tests.rs
index 0defaa69e..a690db846 100644
--- a/cli/tests/integration/watcher_tests.rs
+++ b/cli/tests/integration/watcher_tests.rs
@@ -217,8 +217,7 @@ async fn lint_watch_test() {
.arg(&badly_linted)
.arg("--watch")
.arg("--unstable")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (_stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -275,8 +274,7 @@ async fn lint_watch_without_args_test() {
.arg("lint")
.arg("--watch")
.arg("--unstable")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (_stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -330,8 +328,7 @@ async fn lint_all_files_on_each_change_test() {
.arg(t.path())
.arg("--watch")
.arg("--unstable")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (_stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -369,8 +366,7 @@ async fn fmt_watch_test() {
.arg(&badly_formatted)
.arg("--watch")
.arg("--unstable")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (_stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -425,8 +421,7 @@ async fn fmt_watch_without_args_test() {
.arg("fmt")
.arg("--watch")
.arg("--unstable")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (_stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -482,8 +477,7 @@ async fn fmt_check_all_files_on_each_change_test() {
.arg("--watch")
.arg("--check")
.arg("--unstable")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (_stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -522,8 +516,7 @@ async fn bundle_js_watch() {
.arg("--watch")
.arg("--unstable")
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
@@ -595,8 +588,7 @@ async fn bundle_watch_not_exit() {
.arg("--watch")
.arg("--unstable")
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (_stdout_lines, mut stderr_lines) = child_lines(&mut deno);
@@ -660,8 +652,7 @@ async fn run_watch_no_dynamic() {
.arg("debug")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -750,8 +741,7 @@ async fn run_watch_external_watch_files() {
.arg("--unstable")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -798,8 +788,7 @@ async fn run_watch_load_unload_events() {
.arg("debug")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -851,8 +840,7 @@ async fn run_watch_not_exit() {
.arg("debug")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -909,8 +897,7 @@ async fn run_watch_with_import_map_and_relative_paths() {
.arg(&import_map_path)
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -941,8 +928,7 @@ async fn run_watch_with_ext_flag() {
.arg("ts")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -975,8 +961,7 @@ async fn run_watch_error_messages() {
.arg("--watch")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (_, mut stderr_lines) = child_lines(&mut child);
@@ -1001,8 +986,7 @@ async fn test_watch_basic() {
.arg("--no-check")
.arg(t.path())
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -1158,8 +1142,7 @@ async fn test_watch_doc() {
.arg("--unstable")
.arg(t.path())
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -1207,8 +1190,7 @@ async fn test_watch_module_graph_error_referrer() {
.arg("--unstable")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (_, mut stderr_lines) = child_lines(&mut child);
@@ -1245,8 +1227,7 @@ async fn test_watch_unload_handler_error_on_drop() {
.arg("--watch")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (_, mut stderr_lines) = child_lines(&mut child);
@@ -1283,8 +1264,7 @@ async fn run_watch_blob_urls_reset() {
.arg("--watch")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -1303,20 +1283,17 @@ async fn test_watch_sigint() {
use nix::sys::signal;
use nix::sys::signal::Signal;
use nix::unistd::Pid;
+ use util::TestContext;
- let t = TempDir::new();
+ let context = TestContext::default();
+ let t = context.temp_dir();
let file_to_watch = t.path().join("file_to_watch.js");
file_to_watch.write(r#"Deno.test("foo", () => {});"#);
- let mut child = util::deno_cmd()
- .current_dir(util::testdata_path())
- .arg("test")
- .arg("--watch")
- .arg(&file_to_watch)
+ let mut child = context
+ .new_command()
+ .args_vec(["test", "--watch", &file_to_watch.to_string_lossy()])
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
- .spawn()
- .unwrap();
+ .spawn_with_piped_output();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
wait_contains("Test started", &mut stderr_lines).await;
wait_contains("ok | 1 passed | 0 failed", &mut stdout_lines).await;
@@ -1338,8 +1315,7 @@ async fn bench_watch_basic() {
.arg("--no-check")
.arg(t.path())
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -1459,8 +1435,7 @@ async fn run_watch_reload_once() {
.arg("--reload")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -1499,8 +1474,7 @@ async fn test_watch_serve() {
.arg("debug")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -1551,8 +1525,7 @@ async fn run_watch_dynamic_imports() {
.arg("debug")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -1623,8 +1596,7 @@ async fn run_watch_inspect() {
.arg("debug")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -1678,8 +1650,7 @@ console.log("Listening...")
.arg("debug")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -1745,8 +1716,7 @@ export function foo() {
.arg("debug")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -1804,8 +1774,7 @@ export function foo() {
.arg("debug")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);
@@ -1870,8 +1839,7 @@ export function foo() {
.arg("debug")
.arg(&file_to_watch)
.env("NO_COLOR", "1")
- .stdout(std::process::Stdio::piped())
- .stderr(std::process::Stdio::piped())
+ .piped_output()
.spawn()
.unwrap();
let (mut stdout_lines, mut stderr_lines) = child_lines(&mut child);