Skip to content

Commit 76797b5

Browse files
committed
switch from bash script to rust program
1 parent b0351e4 commit 76797b5

File tree

4 files changed

+37
-40
lines changed

4 files changed

+37
-40
lines changed

crates/cargo-test-support/src/paths.rs

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use std::path::{Path, PathBuf};
99
use std::process::Command;
1010
use std::sync::atomic::{AtomicUsize, Ordering};
1111
use std::sync::Mutex;
12+
use crate::{basic_manifest, project};
1213

1314
static CARGO_INTEGRATION_TEST_DIR: &str = "cit";
1415

@@ -265,21 +266,23 @@ pub fn sysroot() -> String {
265266
sysroot.trim().to_string()
266267
}
267268

268-
#[cfg(unix)]
269-
pub fn echo_wrapper() -> std::io::Result<std::path::PathBuf> {
270-
use std::os::unix::fs::PermissionsExt;
271-
let wrapper_path = root().join("rustc-echo-wrapper");
272-
std::fs::write(
273-
&wrapper_path,
274-
r#"#! /bin/bash
275-
276-
echo "WRAPPER CALLED: $*"
277-
"$@""#,
278-
)?;
279-
280-
let mut perms = std::fs::metadata(&wrapper_path)?.permissions();
281-
perms.set_mode(0o755);
282-
std::fs::set_permissions(&wrapper_path, perms)?;
283-
284-
Ok(wrapper_path)
269+
pub fn echo_wrapper() -> std::path::PathBuf {
270+
let p = project()
271+
.at("rustc-echo-wrapper")
272+
.file("Cargo.toml", &basic_manifest("rustc-echo-wrapper", "1.0.0"))
273+
.file(
274+
"src/main.rs",
275+
r#"
276+
fn main() {
277+
let args = std::env::args().collect::<Vec<_>>();
278+
eprintln!("WRAPPER CALLED: {}", args[1..].join(" "));
279+
let status = std::process::Command::new(&args[1])
280+
.args(&args[2..]).status().unwrap();
281+
std::process::exit(status.code().unwrap_or(1));
282+
}
283+
"#,
284+
)
285+
.build();
286+
p.cargo("build").run();
287+
p.bin("rustc-echo-wrapper")
285288
}

tests/testsuite/cache_messages.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,6 @@ fn caching_large_output() {
447447
}
448448

449449
#[cargo_test]
450-
#[cfg(unix)]
451450
fn rustc_workspace_wrapper() {
452451
use cargo_test_support::paths;
453452

@@ -460,9 +459,9 @@ fn rustc_workspace_wrapper() {
460459
.build();
461460

462461
p.cargo("check -Zunstable-options -v")
463-
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper().unwrap())
462+
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper())
464463
.masquerade_as_nightly_cargo()
465-
.with_stdout_contains("WRAPPER CALLED: rustc --crate-name foo src/lib.rs [..]")
464+
.with_stderr_contains("WRAPPER CALLED: rustc --crate-name foo src/lib.rs [..]")
466465
.run();
467466

468467
// Check without a wrapper should rebuild
@@ -479,7 +478,7 @@ fn rustc_workspace_wrapper() {
479478

480479
// Again, reading from the cache.
481480
p.cargo("check -Zunstable-options -v")
482-
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper().unwrap())
481+
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper())
483482
.masquerade_as_nightly_cargo()
484483
.with_stderr_contains("[FRESH] foo [..]")
485484
.with_stdout_does_not_contain("WRAPPER CALLED: rustc --crate-name foo src/lib.rs [..]")

tests/testsuite/check.rs

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -783,7 +783,6 @@ fn error_from_deep_recursion() -> Result<(), fmt::Error> {
783783
}
784784

785785
#[cargo_test]
786-
#[cfg(unix)]
787786
fn rustc_workspace_wrapper_affects_all_workspace_members() {
788787
use cargo_test_support::paths;
789788
let p = project()
@@ -801,15 +800,14 @@ fn rustc_workspace_wrapper_affects_all_workspace_members() {
801800
.build();
802801

803802
p.cargo("check -Zunstable-options")
804-
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper().unwrap())
803+
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper())
805804
.masquerade_as_nightly_cargo()
806-
.with_stdout_contains("WRAPPER CALLED: rustc --crate-name bar [..]")
807-
.with_stdout_contains("WRAPPER CALLED: rustc --crate-name baz [..]")
805+
.with_stderr_contains("WRAPPER CALLED: rustc --crate-name bar [..]")
806+
.with_stderr_contains("WRAPPER CALLED: rustc --crate-name baz [..]")
808807
.run();
809808
}
810809

811810
#[cargo_test]
812-
#[cfg(unix)]
813811
fn rustc_workspace_wrapper_includes_path_deps() {
814812
use cargo_test_support::paths;
815813
let p = project()
@@ -836,16 +834,15 @@ fn rustc_workspace_wrapper_includes_path_deps() {
836834
.build();
837835

838836
p.cargo("check --workspace -Zunstable-options")
839-
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper().unwrap())
837+
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper())
840838
.masquerade_as_nightly_cargo()
841-
.with_stdout_contains("WRAPPER CALLED: rustc --crate-name foo [..]")
842-
.with_stdout_contains("WRAPPER CALLED: rustc --crate-name bar [..]")
843-
.with_stdout_contains("WRAPPER CALLED: rustc --crate-name baz [..]")
839+
.with_stderr_contains("WRAPPER CALLED: rustc --crate-name foo [..]")
840+
.with_stderr_contains("WRAPPER CALLED: rustc --crate-name bar [..]")
841+
.with_stderr_contains("WRAPPER CALLED: rustc --crate-name baz [..]")
844842
.run();
845843
}
846844

847845
#[cargo_test]
848-
#[cfg(unix)]
849846
fn rustc_workspace_wrapper_respects_primary_units() {
850847
use cargo_test_support::paths;
851848
let p = project()
@@ -863,15 +860,14 @@ fn rustc_workspace_wrapper_respects_primary_units() {
863860
.build();
864861

865862
p.cargo("check -p bar -Zunstable-options")
866-
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper().unwrap())
863+
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper())
867864
.masquerade_as_nightly_cargo()
868-
.with_stdout_contains("WRAPPER CALLED: rustc --crate-name bar [..]")
865+
.with_stderr_contains("WRAPPER CALLED: rustc --crate-name bar [..]")
869866
.with_stdout_does_not_contain("WRAPPER CALLED: rustc --crate-name baz [..]")
870867
.run();
871868
}
872869

873870
#[cargo_test]
874-
#[cfg(unix)]
875871
fn rustc_workspace_wrapper_excludes_published_deps() {
876872
use cargo_test_support::paths;
877873
let p = project()
@@ -898,10 +894,10 @@ fn rustc_workspace_wrapper_excludes_published_deps() {
898894
Package::new("baz", "1.0.0").publish();
899895

900896
p.cargo("check --workspace -v -Zunstable-options")
901-
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper().unwrap())
897+
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper())
902898
.masquerade_as_nightly_cargo()
903-
.with_stdout_contains("WRAPPER CALLED: rustc --crate-name foo [..]")
904-
.with_stdout_contains("WRAPPER CALLED: rustc --crate-name bar [..]")
899+
.with_stderr_contains("WRAPPER CALLED: rustc --crate-name foo [..]")
900+
.with_stderr_contains("WRAPPER CALLED: rustc --crate-name bar [..]")
905901
.with_stderr_contains("[CHECKING] baz [..]")
906902
.with_stdout_does_not_contain("WRAPPER CALLED: rustc --crate-name baz [..]")
907903
.run();

tests/testsuite/fix.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,7 +1111,6 @@ fn does_not_crash_with_rustc_workspace_wrapper() {
11111111
}
11121112

11131113
#[cargo_test]
1114-
#[cfg(unix)]
11151114
fn uses_workspace_wrapper_and_primary_wrapper_override() {
11161115
// We don't have /usr/bin/env on Windows.
11171116
let p = project()
@@ -1127,9 +1126,9 @@ fn uses_workspace_wrapper_and_primary_wrapper_override() {
11271126
.build();
11281127

11291128
p.cargo("fix --allow-no-vcs --verbose -Zunstable-options")
1130-
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper().unwrap())
1129+
.env("RUSTC_WORKSPACE_WRAPPER", paths::echo_wrapper())
11311130
.masquerade_as_nightly_cargo()
1132-
.with_stdout_contains("WRAPPER CALLED: rustc src/lib.rs --crate-name foo [..]")
1131+
.with_stderr_contains("WRAPPER CALLED: rustc src/lib.rs --crate-name foo [..]")
11331132
.run();
11341133
}
11351134

0 commit comments

Comments
 (0)