Skip to content

Commit 119bf4d

Browse files
committed
forward build-time env vars to binary, and test that we do
1 parent 10f58b3 commit 119bf4d

File tree

6 files changed

+31
-17
lines changed

6 files changed

+31
-17
lines changed

cargo-miri/bin.rs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,16 @@ path = "lib.rs"
375375
}
376376

377377
fn phase_cargo_miri(mut args: env::Args) {
378+
// Check for version and help flags even when invoked as `cargo-miri`.
379+
if has_arg_flag("--help") || has_arg_flag("-h") {
380+
show_help();
381+
return;
382+
}
383+
if has_arg_flag("--version") || has_arg_flag("-V") {
384+
show_version();
385+
return;
386+
}
387+
378388
// Require a subcommand before any flags.
379389
// We cannot know which of those flags take arguments and which do not,
380390
// so we cannot detect subcommands later.
@@ -570,6 +580,13 @@ fn phase_cargo_runner(binary: &str, binary_args: env::Args) {
570580
let info: CrateRunInfo = serde_json::from_reader(file)
571581
.unwrap_or_else(|_| show_error(format!("File {:?} does not contain valid JSON", binary)));
572582

583+
// Set missing env vars.
584+
for (name, val) in info.env {
585+
if env::var_os(&name).is_none() {
586+
env::set_var(name, val);
587+
}
588+
}
589+
573590
let mut cmd = miri();
574591
// Forward rustc arguments. We need to patch "--extern" filenames because
575592
// we forced a check-only build without cargo knowing about that: replace `.rlib` suffix by `.rmeta`.
@@ -613,16 +630,6 @@ fn phase_cargo_runner(binary: &str, binary_args: env::Args) {
613630
}
614631

615632
fn main() {
616-
// Check for version and help flags even when invoked as `cargo-miri`.
617-
if has_arg_flag("--help") || has_arg_flag("-h") {
618-
show_help();
619-
return;
620-
}
621-
if has_arg_flag("--version") || has_arg_flag("-V") {
622-
show_version();
623-
return;
624-
}
625-
626633
// Rustc does not support non-UTF-8 arguments so we make no attempt either.
627634
// (We do support non-UTF-8 environment variables though.)
628635
let mut args = std::env::args();

test-cargo-miri/test.stdout.ref

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ running 1 test
44
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
55

66

7-
running 7 tests
8-
.i.....
9-
test result: ok. 6 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out
7+
running 8 tests
8+
..i.....
9+
test result: ok. 7 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out
1010

test-cargo-miri/test.stdout.ref2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out
77
running 1 test
88
test simple1 ... ok
99

10-
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 6 filtered out
10+
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 7 filtered out
1111

test-cargo-miri/test.stdout.ref3

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out
77
running 1 test
88
test num_cpus ... ok
99

10-
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 6 filtered out
10+
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 7 filtered out
1111

test-cargo-miri/test.stdout.ref4

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

2-
running 7 tests
2+
running 8 tests
3+
test cargo_env ... ok
34
test do_panic ... ok
45
test does_not_work_on_miri ... ignored
56
test entropy_rng ... ok
@@ -8,5 +9,5 @@ test num_cpus ... ok
89
test simple1 ... ok
910
test simple2 ... ok
1011

11-
test result: ok. 6 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out
12+
test result: ok. 7 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out
1213

test-cargo-miri/tests/test.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ fn num_cpus() {
4242
assert_eq!(num_cpus::get(), 1);
4343
}
4444

45+
#[test]
46+
fn cargo_env() {
47+
assert_eq!(env!("CARGO_PKG_NAME"), "cargo-miri-test");
48+
env!("CARGO_BIN_EXE_cargo-miri-test"); // Asserts that this exists.
49+
}
50+
4551
#[test]
4652
#[should_panic(expected="Explicit panic")]
4753
fn do_panic() { // In large, friendly letters :)

0 commit comments

Comments
 (0)