about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-06-18 23:38:09 +0000
committerbors <bors@rust-lang.org>2024-06-18 23:38:09 +0000
commit4e63822fc4e2ca675dd28bb3f332f7fd4f3f8126 (patch)
treea70189c0eddd1af5b9f581c94bd9ced1d5c20b1d
parent8fcd4dd08e2ba3e922d917d819ba0be066bdb005 (diff)
parent78998f3fea3aba636e50aa0a6abcafa51d66eff7 (diff)
downloadrust-4e63822fc4e2ca675dd28bb3f332f7fd4f3f8126.tar.gz
rust-4e63822fc4e2ca675dd28bb3f332f7fd4f3f8126.zip
Auto merge of #126607 - Oneirical:the-testern-world, r=jieyouxu
Rewrite `separate-link`, `separate-link-fail` and `allocator-shim-circular-deps` `run-make` tests to `ui` or `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).
-rw-r--r--src/tools/tidy/src/allowed_run_make_makefiles.txt3
-rw-r--r--tests/run-make/allocator-shim-circular-deps/Makefile12
-rw-r--r--tests/run-make/allocator-shim-circular-deps/rmake.rs16
-rw-r--r--tests/run-make/separate-link-fail/Makefile7
-rw-r--r--tests/run-make/separate-link-fail/foo.rs1
-rw-r--r--tests/run-make/separate-link-fail/rmake.rs15
-rw-r--r--tests/run-make/separate-link/Makefile7
-rw-r--r--tests/run-make/separate-link/rmake.rs14
8 files changed, 46 insertions, 29 deletions
diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt
index 1596257747f..12d5f3576ca 100644
--- a/src/tools/tidy/src/allowed_run_make_makefiles.txt
+++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt
@@ -1,4 +1,3 @@
-run-make/allocator-shim-circular-deps/Makefile
 run-make/archive-duplicate-names/Makefile
 run-make/atomic-lock-free/Makefile
 run-make/branch-protection-check-IBT/Makefile
@@ -185,8 +184,6 @@ run-make/rustdoc-io-error/Makefile
 run-make/sanitizer-cdylib-link/Makefile
 run-make/sanitizer-dylib-link/Makefile
 run-make/sanitizer-staticlib-link/Makefile
-run-make/separate-link-fail/Makefile
-run-make/separate-link/Makefile
 run-make/sepcomp-cci-copies/Makefile
 run-make/sepcomp-inlining/Makefile
 run-make/sepcomp-separate/Makefile
diff --git a/tests/run-make/allocator-shim-circular-deps/Makefile b/tests/run-make/allocator-shim-circular-deps/Makefile
deleted file mode 100644
index f667e2e2ec2..00000000000
--- a/tests/run-make/allocator-shim-circular-deps/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# This test is designed to intentionally introduce a circular dependency scenario to check that a specific compiler bug doesn't make a resurgence.
-# The bug in question arose when at least one crate required a global allocator, and that crate was placed after the one defining it in the linker order. 
-# The generated symbols.o should not result in any linker errors.
-# See https://github.com/rust-lang/rust/issues/112715
-
-# ignore-cross-compile
-include ../tools.mk
-
-all:
-	rm -rf $(TMPDIR) && mkdir $(TMPDIR)
-	$(RUSTC) my_lib.rs
-	$(RUSTC) main.rs --test --extern my_lib=$(TMPDIR)/libmy_lib.rlib
diff --git a/tests/run-make/allocator-shim-circular-deps/rmake.rs b/tests/run-make/allocator-shim-circular-deps/rmake.rs
new file mode 100644
index 00000000000..7d6b0bd204a
--- /dev/null
+++ b/tests/run-make/allocator-shim-circular-deps/rmake.rs
@@ -0,0 +1,16 @@
+// This test is designed to intentionally introduce a circular dependency scenario to check
+// that a specific compiler bug doesn't make a resurgence.
+// The bug in question arose when at least one crate
+// required a global allocator, and that crate was placed after
+// the one defining it in the linker order.
+// The generated symbols.o should not result in any linker errors.
+// See https://github.com/rust-lang/rust/issues/112715
+
+//@ ignore-cross-compile
+
+use run_make_support::{rust_lib_name, rustc};
+
+fn main() {
+    rustc().input("my_lib.rs").run();
+    rustc().input("main.rs").arg("--test").extern_("my_lib", rust_lib_name("my_lib")).run();
+}
diff --git a/tests/run-make/separate-link-fail/Makefile b/tests/run-make/separate-link-fail/Makefile
deleted file mode 100644
index bfd18fbf972..00000000000
--- a/tests/run-make/separate-link-fail/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-include ../tools.mk
-
-all:
-	echo 'fn main(){}' > $(TMPDIR)/main.rs
-	# Make sure that this fails
-	! $(RUSTC) -Z link-only $(TMPDIR)/main.rs 2> $(TMPDIR)/stderr.txt
-	$(CGREP) "The input does not look like a .rlink file" < $(TMPDIR)/stderr.txt
diff --git a/tests/run-make/separate-link-fail/foo.rs b/tests/run-make/separate-link-fail/foo.rs
new file mode 100644
index 00000000000..f328e4d9d04
--- /dev/null
+++ b/tests/run-make/separate-link-fail/foo.rs
@@ -0,0 +1 @@
+fn main() {}
diff --git a/tests/run-make/separate-link-fail/rmake.rs b/tests/run-make/separate-link-fail/rmake.rs
new file mode 100644
index 00000000000..b5d5300de68
--- /dev/null
+++ b/tests/run-make/separate-link-fail/rmake.rs
@@ -0,0 +1,15 @@
+// rustc usually wants Rust code as its input. The flag `link-only` is one
+// exception, where a .rlink file is instead requested. The compiler should
+// fail when the user is wrongly passing the original Rust code
+// instead of the generated .rlink file when this flag is on.
+// https://github.com/rust-lang/rust/issues/95297
+
+use run_make_support::rustc;
+
+fn main() {
+    rustc()
+        .arg("-Zlink-only")
+        .input("foo.rs")
+        .run_fail()
+        .assert_stderr_contains("The input does not look like a .rlink file");
+}
diff --git a/tests/run-make/separate-link/Makefile b/tests/run-make/separate-link/Makefile
deleted file mode 100644
index d01158d9f5f..00000000000
--- a/tests/run-make/separate-link/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# ignore-cross-compile
-include ../tools.mk
-
-all:
-	echo 'fn main(){}' | $(RUSTC) -Z no-link -
-	$(RUSTC) -Z link-only $(TMPDIR)/rust_out.rlink
-	$(call RUN,rust_out)
diff --git a/tests/run-make/separate-link/rmake.rs b/tests/run-make/separate-link/rmake.rs
new file mode 100644
index 00000000000..e91b25489bc
--- /dev/null
+++ b/tests/run-make/separate-link/rmake.rs
@@ -0,0 +1,14 @@
+// The compiler flags no-link (and by extension, link-only) used to be broken
+// due to changes in encoding/decoding. This was patched, and this test checks
+// that these flags are not broken again, resulting in successful compilation.
+// See https://github.com/rust-lang/rust/issues/77857
+
+//@ ignore-cross-compile
+
+use run_make_support::{run, rustc};
+
+fn main() {
+    rustc().stdin(b"fn main(){}").arg("-Zno-link").arg("-").run();
+    rustc().arg("-Zlink-only").input("rust_out.rlink").run();
+    run("rust_out");
+}