Skip to content

Commit c99fb10

Browse files
committed
test 'cargo miri run' CWD, also for subcrate in a workspace
1 parent 113a335 commit c99fb10

File tree

8 files changed

+74
-37
lines changed

8 files changed

+74
-37
lines changed

test-cargo-miri/Cargo.lock

Lines changed: 37 additions & 35 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test-cargo-miri/Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
[workspace]
2+
members = ["subcrate"]
3+
14
[package]
25
name = "cargo-miri-test"
36
version = "0.1.0"
4-
authors = ["Oliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>"]
7+
authors = ["Miri Team"]
58
edition = "2018"
69

710
[dependencies]

test-cargo-miri/run-test.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ def test_cargo_miri_run():
6363
cargo_miri("run") + ["--bin", "cargo-miri-test", "--", "hello world", '"hello world"'],
6464
"stdout.ref2", "stderr.ref2"
6565
)
66+
test("`cargo miri run` (subcrate)",
67+
cargo_miri("run") + ["-p", "subcrate"],
68+
"stdout.ref3", "stderr.ref3",
69+
env={'MIRIFLAGS': "-Zmiri-disable-isolation"},
70+
)
6671

6772
def test_cargo_miri_test():
6873
# rustdoc is not run on foreign targets

test-cargo-miri/src/main.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
use byteorder::{BigEndian, ByteOrder};
2+
use std::env;
3+
use std::path::PathBuf;
24
#[cfg(unix)]
35
use std::io::{self, BufRead};
46

@@ -17,8 +19,12 @@ fn main() {
1719
eprintln!("{}", arg);
1820
}
1921

20-
// If there were no arguments, access stdin.
22+
// If there were no arguments, access stdin and test working dir.
2123
if std::env::args().len() <= 1 {
24+
let env_dir = env::current_dir().unwrap();
25+
let crate_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap());
26+
assert_eq!(env_dir, crate_dir);
27+
2228
#[cfg(unix)]
2329
for line in io::stdin().lock().lines() {
2430
let num: i32 = line.unwrap().parse().unwrap();

test-cargo-miri/stderr.ref3

Whitespace-only changes.

test-cargo-miri/stdout.ref3

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
subcrate running

test-cargo-miri/subcrate/Cargo.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "subcrate"
3+
version = "0.1.0"
4+
authors = ["Miri Team"]
5+
edition = "2018"
6+
7+
[[bin]]
8+
name = "subcrate"
9+
path = "main.rs"

test-cargo-miri/subcrate/main.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
use std::env;
2+
use std::path::PathBuf;
3+
4+
fn main() {
5+
println!("subcrate running");
6+
7+
let env_dir = env::current_dir().unwrap();
8+
let crate_dir = PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap());
9+
// CWD should be workspace root, i.e., one level up from crate root.
10+
assert_eq!(env_dir, crate_dir.parent().unwrap());
11+
}

0 commit comments

Comments
 (0)