Auto merge of #128102 - Oneirical:real-testate, r=Kobzol
Migrate `extern-diff-internal-name`, `extern-multiple-copies` and `extern-multiple-copies2` `run-make` tests to rmake Part of #121876 and the associated [Google Summer of Code project](https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html). Please try: try-job: test-various
This commit is contained in:
commit
54be9ad5eb
@ -13,11 +13,8 @@ run-make/dep-info/Makefile
|
||||
run-make/dump-ice-to-disk/Makefile
|
||||
run-make/emit-to-stdout/Makefile
|
||||
run-make/export-executable-symbols/Makefile
|
||||
run-make/extern-diff-internal-name/Makefile
|
||||
run-make/extern-flag-disambiguates/Makefile
|
||||
run-make/extern-fn-reachable/Makefile
|
||||
run-make/extern-multiple-copies/Makefile
|
||||
run-make/extern-multiple-copies2/Makefile
|
||||
run-make/fmt-write-bloat/Makefile
|
||||
run-make/foreign-double-unwind/Makefile
|
||||
run-make/foreign-exceptions/Makefile
|
||||
|
@ -1,6 +0,0 @@
|
||||
# ignore-cross-compile
|
||||
include ../tools.mk
|
||||
|
||||
all:
|
||||
$(RUSTC) lib.rs
|
||||
$(RUSTC) test.rs --extern foo=$(TMPDIR)/libbar.rlib
|
15
tests/run-make/extern-diff-internal-name/rmake.rs
Normal file
15
tests/run-make/extern-diff-internal-name/rmake.rs
Normal file
@ -0,0 +1,15 @@
|
||||
// In the following scenario:
|
||||
// 1. The crate foo, is referenced multiple times
|
||||
// 2. --extern foo=./path/to/libbar.rlib is specified to rustc
|
||||
// 3. The internal crate name of libbar.rlib is not foo
|
||||
// Compilation fails with the "multiple crate versions" error message.
|
||||
// As this was fixed in #17189, this regression test ensures this bug does not
|
||||
// make a resurgence.
|
||||
// See https://github.com/rust-lang/rust/pull/17189
|
||||
|
||||
use run_make_support::{rust_lib_name, rustc};
|
||||
|
||||
fn main() {
|
||||
rustc().input("lib.rs").run();
|
||||
rustc().input("test.rs").extern_("foo", rust_lib_name("bar")).run();
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
# ignore-cross-compile
|
||||
include ../tools.mk
|
||||
|
||||
all:
|
||||
$(RUSTC) foo1.rs
|
||||
$(RUSTC) foo2.rs
|
||||
mkdir $(TMPDIR)/foo
|
||||
cp $(TMPDIR)/libfoo1.rlib $(TMPDIR)/foo/libfoo1.rlib
|
||||
$(RUSTC) bar.rs --extern foo1=$(TMPDIR)/libfoo1.rlib -L $(TMPDIR)/foo
|
15
tests/run-make/extern-multiple-copies/rmake.rs
Normal file
15
tests/run-make/extern-multiple-copies/rmake.rs
Normal file
@ -0,0 +1,15 @@
|
||||
// In this test, the rust library foo1 exists in two different locations, but only one
|
||||
// is required by the --extern flag. This test checks that the copy is ignored (as --extern
|
||||
// demands fetching only the original instance of foo1) and that no error is emitted, resulting
|
||||
// in successful compilation.
|
||||
// https://github.com/rust-lang/rust/pull/29961
|
||||
|
||||
use run_make_support::{path, rfs, rust_lib_name, rustc};
|
||||
|
||||
fn main() {
|
||||
rustc().input("foo1.rs").run();
|
||||
rustc().input("foo2.rs").run();
|
||||
rfs::create_dir("foo");
|
||||
rfs::copy(rust_lib_name("foo1"), path("foo").join(rust_lib_name("foo1")));
|
||||
rustc().input("bar.rs").extern_("foo1", rust_lib_name("foo1")).library_search_path("foo").run();
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
# ignore-cross-compile
|
||||
include ../tools.mk
|
||||
|
||||
all:
|
||||
$(RUSTC) foo1.rs
|
||||
$(RUSTC) foo2.rs
|
||||
mkdir $(TMPDIR)/foo
|
||||
cp $(TMPDIR)/libfoo1.rlib $(TMPDIR)/foo/libfoo1.rlib
|
||||
$(RUSTC) bar.rs \
|
||||
--extern foo1=$(TMPDIR)/foo/libfoo1.rlib \
|
||||
--extern foo2=$(TMPDIR)/libfoo2.rlib
|
22
tests/run-make/extern-multiple-copies2/rmake.rs
Normal file
22
tests/run-make/extern-multiple-copies2/rmake.rs
Normal file
@ -0,0 +1,22 @@
|
||||
// Almost identical to `extern-multiple-copies`, but with a variation in the --extern calls
|
||||
// and the addition of #[macro_use] in the rust code files, which used to break --extern
|
||||
// until #33625.
|
||||
// In this test, the rust library foo1 exists in two different locations, but only one
|
||||
// is required by the --extern flag. This test checks that the copy is ignored (as --extern
|
||||
// demands fetching only the original instance of foo1) and that no error is emitted, resulting
|
||||
// in successful compilation.
|
||||
// https://github.com/rust-lang/rust/issues/33762
|
||||
|
||||
use run_make_support::{path, rfs, rust_lib_name, rustc};
|
||||
|
||||
fn main() {
|
||||
rustc().input("foo1.rs").run();
|
||||
rustc().input("foo2.rs").run();
|
||||
rfs::create_dir("foo");
|
||||
rfs::copy(rust_lib_name("foo1"), path("foo").join(rust_lib_name("foo1")));
|
||||
rustc()
|
||||
.input("bar.rs")
|
||||
.extern_("foo1", path("foo").join(rust_lib_name("foo1")))
|
||||
.extern_("foo2", rust_lib_name("foo2"))
|
||||
.run();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user