Auto merge of #125383 - Oneirical:bundle-them-up, r=jieyouxu
Rewrite `emit`, `mixing-formats` and `bare-outfile` `run-make` tests in `rmake.rs` format Part of #121876 and the associated [Google Summer of Code project](https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html). try-job: x86_64-msvc
This commit is contained in:
commit
7c52d2db63
@ -4,12 +4,12 @@
|
|||||||
|
|
||||||
use crate::is_windows;
|
use crate::is_windows;
|
||||||
|
|
||||||
use super::{bin_name, handle_failed_output};
|
use super::handle_failed_output;
|
||||||
|
|
||||||
fn run_common(name: &str) -> (Command, Output) {
|
fn run_common(name: &str) -> (Command, Output) {
|
||||||
let mut bin_path = PathBuf::new();
|
let mut bin_path = PathBuf::new();
|
||||||
bin_path.push(env::var("TMPDIR").unwrap());
|
bin_path.push(env::var("TMPDIR").unwrap());
|
||||||
bin_path.push(&bin_name(name));
|
bin_path.push(name);
|
||||||
let ld_lib_path_envvar = env::var("LD_LIB_PATH_ENVVAR").unwrap();
|
let ld_lib_path_envvar = env::var("LD_LIB_PATH_ENVVAR").unwrap();
|
||||||
let mut cmd = Command::new(bin_path);
|
let mut cmd = Command::new(bin_path);
|
||||||
cmd.env(&ld_lib_path_envvar, {
|
cmd.env(&ld_lib_path_envvar, {
|
||||||
|
@ -2,7 +2,6 @@ run-make/allocator-shim-circular-deps/Makefile
|
|||||||
run-make/allow-non-lint-warnings-cmdline/Makefile
|
run-make/allow-non-lint-warnings-cmdline/Makefile
|
||||||
run-make/archive-duplicate-names/Makefile
|
run-make/archive-duplicate-names/Makefile
|
||||||
run-make/atomic-lock-free/Makefile
|
run-make/atomic-lock-free/Makefile
|
||||||
run-make/bare-outfile/Makefile
|
|
||||||
run-make/branch-protection-check-IBT/Makefile
|
run-make/branch-protection-check-IBT/Makefile
|
||||||
run-make/c-dynamic-dylib/Makefile
|
run-make/c-dynamic-dylib/Makefile
|
||||||
run-make/c-dynamic-rlib/Makefile
|
run-make/c-dynamic-rlib/Makefile
|
||||||
@ -40,7 +39,6 @@ run-make/emit-path-unhashed/Makefile
|
|||||||
run-make/emit-shared-files/Makefile
|
run-make/emit-shared-files/Makefile
|
||||||
run-make/emit-stack-sizes/Makefile
|
run-make/emit-stack-sizes/Makefile
|
||||||
run-make/emit-to-stdout/Makefile
|
run-make/emit-to-stdout/Makefile
|
||||||
run-make/emit/Makefile
|
|
||||||
run-make/env-dep-info/Makefile
|
run-make/env-dep-info/Makefile
|
||||||
run-make/error-found-staticlib-instead-crate/Makefile
|
run-make/error-found-staticlib-instead-crate/Makefile
|
||||||
run-make/error-writing-dependencies/Makefile
|
run-make/error-writing-dependencies/Makefile
|
||||||
@ -147,7 +145,6 @@ run-make/min-global-align/Makefile
|
|||||||
run-make/mingw-export-call-convention/Makefile
|
run-make/mingw-export-call-convention/Makefile
|
||||||
run-make/mismatching-target-triples/Makefile
|
run-make/mismatching-target-triples/Makefile
|
||||||
run-make/missing-crate-dependency/Makefile
|
run-make/missing-crate-dependency/Makefile
|
||||||
run-make/mixing-formats/Makefile
|
|
||||||
run-make/mixing-libs/Makefile
|
run-make/mixing-libs/Makefile
|
||||||
run-make/msvc-opt-minsize/Makefile
|
run-make/msvc-opt-minsize/Makefile
|
||||||
run-make/multiple-emits/Makefile
|
run-make/multiple-emits/Makefile
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
# This test checks that manually setting the output file as a bare file with no file extension still results in successful compilation.
|
|
||||||
|
|
||||||
# ignore-cross-compile
|
|
||||||
include ../tools.mk
|
|
||||||
|
|
||||||
all:
|
|
||||||
cp foo.rs $(TMPDIR)
|
|
||||||
cd $(TMPDIR) && $(RUSTC) -o foo foo.rs
|
|
||||||
$(call RUN,foo)
|
|
15
tests/run-make/bare-outfile/rmake.rs
Normal file
15
tests/run-make/bare-outfile/rmake.rs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// This test checks that manually setting the output file as a bare file with no file extension
|
||||||
|
// still results in successful compilation.
|
||||||
|
|
||||||
|
//@ ignore-cross-compile
|
||||||
|
|
||||||
|
use run_make_support::{run, rustc, tmp_dir};
|
||||||
|
use std::env;
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
fs::copy("foo.rs", tmp_dir().join("foo.rs")).unwrap();
|
||||||
|
env::set_current_dir(tmp_dir());
|
||||||
|
rustc().output("foo").input("foo.rs").run();
|
||||||
|
run("foo");
|
||||||
|
}
|
@ -1,22 +0,0 @@
|
|||||||
# ignore-cross-compile
|
|
||||||
include ../tools.mk
|
|
||||||
|
|
||||||
all:
|
|
||||||
$(RUSTC) -Copt-level=0 --emit=llvm-bc,llvm-ir,asm,obj,link test-24876.rs
|
|
||||||
$(RUSTC) -Copt-level=1 --emit=llvm-bc,llvm-ir,asm,obj,link test-24876.rs
|
|
||||||
$(RUSTC) -Copt-level=2 --emit=llvm-bc,llvm-ir,asm,obj,link test-24876.rs
|
|
||||||
$(RUSTC) -Copt-level=3 --emit=llvm-bc,llvm-ir,asm,obj,link test-24876.rs
|
|
||||||
$(RUSTC) -Copt-level=s --emit=llvm-bc,llvm-ir,asm,obj,link test-24876.rs
|
|
||||||
$(RUSTC) -Copt-level=z --emit=llvm-bc,llvm-ir,asm,obj,link test-24876.rs
|
|
||||||
$(RUSTC) -Copt-level=0 --emit=llvm-bc,llvm-ir,asm,obj,link test-26235.rs
|
|
||||||
$(call RUN,test-26235) || exit 1
|
|
||||||
$(RUSTC) -Copt-level=1 --emit=llvm-bc,llvm-ir,asm,obj,link test-26235.rs
|
|
||||||
$(call RUN,test-26235) || exit 1
|
|
||||||
$(RUSTC) -Copt-level=2 --emit=llvm-bc,llvm-ir,asm,obj,link test-26235.rs
|
|
||||||
$(call RUN,test-26235) || exit 1
|
|
||||||
$(RUSTC) -Copt-level=3 --emit=llvm-bc,llvm-ir,asm,obj,link test-26235.rs
|
|
||||||
$(call RUN,test-26235) || exit 1
|
|
||||||
$(RUSTC) -Copt-level=s --emit=llvm-bc,llvm-ir,asm,obj,link test-26235.rs
|
|
||||||
$(call RUN,test-26235) || exit 1
|
|
||||||
$(RUSTC) -Copt-level=z --emit=llvm-bc,llvm-ir,asm,obj,link test-26235.rs
|
|
||||||
$(call RUN,test-26235) || exit 1
|
|
19
tests/run-make/emit/rmake.rs
Normal file
19
tests/run-make/emit/rmake.rs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// A bug from 2015 would cause errors when emitting multiple types of files
|
||||||
|
// in the same rustc call. A fix was created in #30452. This test checks that rustc still compiles
|
||||||
|
// a source file successfully when emission of multiple output artifacts are requested.
|
||||||
|
// See https://github.com/rust-lang/rust/pull/30452
|
||||||
|
|
||||||
|
//@ ignore-cross-compile
|
||||||
|
|
||||||
|
use run_make_support::{run, rustc};
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let opt_levels = ["0", "1", "2", "3", "s", "z"];
|
||||||
|
for level in opt_levels {
|
||||||
|
rustc().opt_level(level).emit("llvm-bc,llvm-ir,asm,obj,link").input("test-24876.rs").run();
|
||||||
|
}
|
||||||
|
for level in opt_levels {
|
||||||
|
rustc().opt_level(level).emit("llvm-bc,llvm-ir,asm,obj,link").input("test-26235.rs").run();
|
||||||
|
run("test-26235");
|
||||||
|
}
|
||||||
|
}
|
@ -1,75 +0,0 @@
|
|||||||
# ignore-cross-compile
|
|
||||||
include ../tools.mk
|
|
||||||
|
|
||||||
# Testing various mixings of rlibs and dylibs. Makes sure that it's possible to
|
|
||||||
# link an rlib to a dylib. The dependency tree among the file looks like:
|
|
||||||
#
|
|
||||||
# foo
|
|
||||||
# / \
|
|
||||||
# bar1 bar2
|
|
||||||
# / \ /
|
|
||||||
# baz baz2
|
|
||||||
#
|
|
||||||
# This is generally testing the permutations of the foo/bar1/bar2 layer against
|
|
||||||
# the baz/baz2 layer
|
|
||||||
|
|
||||||
all:
|
|
||||||
# Building just baz
|
|
||||||
$(RUSTC) --crate-type=rlib foo.rs
|
|
||||||
$(RUSTC) --crate-type=dylib bar1.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=dylib,rlib baz.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=bin baz.rs
|
|
||||||
rm $(TMPDIR)/*
|
|
||||||
$(RUSTC) --crate-type=dylib foo.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=rlib bar1.rs
|
|
||||||
$(RUSTC) --crate-type=dylib,rlib baz.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=bin baz.rs
|
|
||||||
rm $(TMPDIR)/*
|
|
||||||
# Building baz2
|
|
||||||
$(RUSTC) --crate-type=rlib foo.rs
|
|
||||||
$(RUSTC) --crate-type=dylib bar1.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=dylib bar2.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=dylib baz2.rs && exit 1 || exit 0
|
|
||||||
$(RUSTC) --crate-type=bin baz2.rs && exit 1 || exit 0
|
|
||||||
rm $(TMPDIR)/*
|
|
||||||
$(RUSTC) --crate-type=rlib foo.rs
|
|
||||||
$(RUSTC) --crate-type=rlib bar1.rs
|
|
||||||
$(RUSTC) --crate-type=dylib bar2.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=dylib,rlib baz2.rs
|
|
||||||
$(RUSTC) --crate-type=bin baz2.rs
|
|
||||||
rm $(TMPDIR)/*
|
|
||||||
$(RUSTC) --crate-type=rlib foo.rs
|
|
||||||
$(RUSTC) --crate-type=dylib bar1.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=rlib bar2.rs
|
|
||||||
$(RUSTC) --crate-type=dylib,rlib baz2.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=bin baz2.rs
|
|
||||||
rm $(TMPDIR)/*
|
|
||||||
$(RUSTC) --crate-type=rlib foo.rs
|
|
||||||
$(RUSTC) --crate-type=rlib bar1.rs
|
|
||||||
$(RUSTC) --crate-type=rlib bar2.rs
|
|
||||||
$(RUSTC) --crate-type=dylib,rlib baz2.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=bin baz2.rs
|
|
||||||
rm $(TMPDIR)/*
|
|
||||||
$(RUSTC) --crate-type=dylib foo.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=rlib bar1.rs
|
|
||||||
$(RUSTC) --crate-type=rlib bar2.rs
|
|
||||||
$(RUSTC) --crate-type=dylib,rlib baz2.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=bin baz2.rs
|
|
||||||
rm $(TMPDIR)/*
|
|
||||||
$(RUSTC) --crate-type=dylib foo.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=dylib bar1.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=rlib bar2.rs
|
|
||||||
$(RUSTC) --crate-type=dylib,rlib baz2.rs
|
|
||||||
$(RUSTC) --crate-type=bin baz2.rs
|
|
||||||
rm $(TMPDIR)/*
|
|
||||||
$(RUSTC) --crate-type=dylib foo.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=rlib bar1.rs
|
|
||||||
$(RUSTC) --crate-type=dylib bar2.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=dylib,rlib baz2.rs
|
|
||||||
$(RUSTC) --crate-type=bin baz2.rs
|
|
||||||
rm $(TMPDIR)/*
|
|
||||||
$(RUSTC) --crate-type=dylib foo.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=dylib bar1.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=dylib bar2.rs -C prefer-dynamic
|
|
||||||
$(RUSTC) --crate-type=dylib,rlib baz2.rs
|
|
||||||
$(RUSTC) --crate-type=bin baz2.rs
|
|
94
tests/run-make/mixing-formats/rmake.rs
Normal file
94
tests/run-make/mixing-formats/rmake.rs
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
// Testing various mixings of rlibs and dylibs. Makes sure that it's possible to
|
||||||
|
// link an rlib to a dylib. The dependency tree among the file looks like:
|
||||||
|
//
|
||||||
|
// foo
|
||||||
|
// / \
|
||||||
|
// bar1 bar2
|
||||||
|
// / \ /
|
||||||
|
// baz baz2
|
||||||
|
//
|
||||||
|
// This is generally testing the permutations of the foo/bar1/bar2 layer against
|
||||||
|
// the baz/baz2 layer
|
||||||
|
|
||||||
|
//@ ignore-cross-compile
|
||||||
|
|
||||||
|
use run_make_support::{rustc, tmp_dir};
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
fn test_with_teardown(rustc_calls: impl Fn()) {
|
||||||
|
rustc_calls();
|
||||||
|
//FIXME(Oneirical): This should be replaced with the run-make-support fs wrappers.
|
||||||
|
fs::remove_dir_all(tmp_dir()).unwrap();
|
||||||
|
fs::create_dir(tmp_dir()).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
test_with_teardown(|| {
|
||||||
|
// Building just baz
|
||||||
|
rustc().crate_type("rlib").input("foo.rs").run();
|
||||||
|
rustc().crate_type("dylib").input("bar1.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("dylib,rlib").input("baz.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("bin").input("baz.rs").run();
|
||||||
|
});
|
||||||
|
test_with_teardown(|| {
|
||||||
|
rustc().crate_type("dylib").input("foo.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("rlib").input("bar1.rs").run();
|
||||||
|
rustc().crate_type("dylib,rlib").input("baz.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("bin").input("baz.rs").run();
|
||||||
|
});
|
||||||
|
test_with_teardown(|| {
|
||||||
|
// Building baz2
|
||||||
|
rustc().crate_type("rlib").input("foo.rs").run();
|
||||||
|
rustc().crate_type("dylib").input("bar1.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("dylib").input("bar2.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("dylib").input("baz2.rs").run_fail_assert_exit_code(1);
|
||||||
|
rustc().crate_type("bin").input("baz2.rs").run_fail_assert_exit_code(1);
|
||||||
|
});
|
||||||
|
test_with_teardown(|| {
|
||||||
|
rustc().crate_type("rlib").input("foo.rs").run();
|
||||||
|
rustc().crate_type("rlib").input("bar1.rs").run();
|
||||||
|
rustc().crate_type("dylib").input("bar2.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("dylib,rlib").input("baz2.rs").run();
|
||||||
|
rustc().crate_type("bin").input("baz2.rs").run();
|
||||||
|
});
|
||||||
|
test_with_teardown(|| {
|
||||||
|
rustc().crate_type("rlib").input("foo.rs").run();
|
||||||
|
rustc().crate_type("dylib").input("bar1.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("rlib").input("bar2.rs").run();
|
||||||
|
rustc().crate_type("dylib,rlib").input("baz2.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("bin").input("baz2.rs").run();
|
||||||
|
});
|
||||||
|
test_with_teardown(|| {
|
||||||
|
rustc().crate_type("rlib").input("foo.rs").run();
|
||||||
|
rustc().crate_type("rlib").input("bar1.rs").run();
|
||||||
|
rustc().crate_type("rlib").input("bar2.rs").run();
|
||||||
|
rustc().crate_type("dylib,rlib").input("baz2.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("bin").input("baz2.rs").run();
|
||||||
|
});
|
||||||
|
test_with_teardown(|| {
|
||||||
|
rustc().crate_type("dylib").input("foo.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("rlib").input("bar1.rs").run();
|
||||||
|
rustc().crate_type("rlib").input("bar2.rs").run();
|
||||||
|
rustc().crate_type("dylib,rlib").input("baz2.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("bin").input("baz2.rs").run();
|
||||||
|
});
|
||||||
|
test_with_teardown(|| {
|
||||||
|
rustc().crate_type("dylib").input("foo.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("dylib").input("bar1.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("rlib").input("bar2.rs").run();
|
||||||
|
rustc().crate_type("dylib,rlib").input("baz2.rs").run();
|
||||||
|
rustc().crate_type("bin").input("baz2.rs").run();
|
||||||
|
});
|
||||||
|
test_with_teardown(|| {
|
||||||
|
rustc().crate_type("dylib").input("foo.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("rlib").input("bar1.rs").run();
|
||||||
|
rustc().crate_type("dylib").input("bar2.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("dylib,rlib").input("baz2.rs").run();
|
||||||
|
rustc().crate_type("bin").input("baz2.rs").run();
|
||||||
|
});
|
||||||
|
rustc().crate_type("dylib").input("foo.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("dylib").input("bar1.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("dylib").input("bar2.rs").arg("-Cprefer-dynamic").run();
|
||||||
|
rustc().crate_type("dylib,rlib").input("baz2.rs").run();
|
||||||
|
rustc().crate_type("bin").input("baz2.rs").run();
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user