Auto merge of #3406 - RalfJung:many-seeds, r=RalfJung

many-seeds: propagate failure properly

This may help explain https://github.com/rust-lang/miri/issues/3405.
This commit is contained in:
bors 2024-03-24 15:13:47 +00:00
commit f97f448d4e
2 changed files with 7 additions and 6 deletions

View file

@ -58,8 +58,9 @@ function run_tests {
MIRIFLAGS="${MIRIFLAGS:-} -O -Zmir-opt-level=4 -Cdebug-assertions=yes" MIRI_SKIP_UI_CHECKS=1 ./miri test -- tests/{pass,panic}
# Also run some many-seeds tests. 64 seeds means this takes around a minute per test.
# (Need to invoke via explicit `bash -c` for Windows.)
for FILE in tests/many-seeds/*.rs; do
MIRI_SEEDS=64 ./miri many-seeds ./miri run "$FILE"
MIRI_SEEDS=64 ./miri many-seeds "$BASH" -c "./miri run '$FILE'"
done
# Check that the benchmarks build and run, but without actually benchmarking.

View file

@ -178,7 +178,7 @@ fn toolchain(flags: Vec<OsString>) -> Result<()> {
.context("Please install rustup-toolchain-install-master by running 'cargo install rustup-toolchain-install-master'")?;
let sh = Shell::new()?;
sh.change_dir(miri_dir()?);
let new_commit = Some(sh.read_file("rust-version")?.trim().to_owned());
let new_commit = sh.read_file("rust-version")?.trim().to_owned();
let current_commit = {
let rustc_info = cmd!(sh, "rustc +miri --version -v").read();
if rustc_info.is_err() {
@ -193,7 +193,7 @@ fn toolchain(flags: Vec<OsString>) -> Result<()> {
}
};
// Check if we already are at that commit.
if current_commit == new_commit {
if current_commit.as_ref() == Some(&new_commit) {
if active_toolchain()? != "miri" {
cmd!(sh, "rustup override set miri").run()?;
}
@ -202,7 +202,7 @@ fn toolchain(flags: Vec<OsString>) -> Result<()> {
// Install and setup new toolchain.
cmd!(sh, "rustup toolchain uninstall miri").run()?;
cmd!(sh, "rustup-toolchain-install-master -n miri -c cargo -c rust-src -c rustc-dev -c llvm-tools -c rustfmt -c clippy {flags...} -- {new_commit...}").run()?;
cmd!(sh, "rustup-toolchain-install-master -n miri -c cargo -c rust-src -c rustc-dev -c llvm-tools -c rustfmt -c clippy {flags...} -- {new_commit}").run()?;
cmd!(sh, "rustup override set miri").run()?;
// Cleanup.
cmd!(sh, "cargo clean").run()?;
@ -380,9 +380,9 @@ fn many_seeds(command: Vec<OsString>) -> Result<()> {
.env("MIRIFLAGS", miriflags)
.quiet()
.run();
if status.is_err() {
if let Err(err) = status {
println!("Failing seed: {seed}");
break;
return Err(err.into());
}
}
Ok(())