about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTrevor Gross <t.gross35@gmail.com>2024-07-18 05:14:06 -0500
committerGitHub <noreply@github.com>2024-07-18 05:14:06 -0500
commitd817c0f87a900c4c824aa638d26f6a6c301c7952 (patch)
treea2fdf6ab4e1567d33ff98ff6ac7eae9574a2021a
parenta2178dffc8bc4db7a13e4b93af0d9030a9c616d6 (diff)
parent3ba62f0a63c6b0092b6fec3bbc8877045073d827 (diff)
downloadrust-d817c0f87a900c4c824aa638d26f6a6c301c7952.tar.gz
rust-d817c0f87a900c4c824aa638d26f6a6c301c7952.zip
Rollup merge of #127822 - Oneirical:amazon-rainfortest, r=jieyouxu
Migrate `issue-85401-static-mir`, `missing-crate-dependency` and `unstable-flag-required` `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).

try-job: armhf-gnu
try-job: test-various
try-job: x86_64-msvc
try-job: aarch64-apple
try-job: dist-x86_64-linux
-rw-r--r--src/tools/tidy/src/allowed_run_make_makefiles.txt3
-rw-r--r--tests/run-make/ice-static-mir/bar.rs (renamed from tests/run-make/issue-85401-static-mir/bar.rs)0
-rw-r--r--tests/run-make/ice-static-mir/baz.rs (renamed from tests/run-make/issue-85401-static-mir/baz.rs)0
-rw-r--r--tests/run-make/ice-static-mir/foo.rs (renamed from tests/run-make/issue-85401-static-mir/foo.rs)0
-rw-r--r--tests/run-make/ice-static-mir/rmake.rs42
-rw-r--r--tests/run-make/issue-85401-static-mir/Makefile16
-rw-r--r--tests/run-make/missing-crate-dependency/Makefile9
-rw-r--r--tests/run-make/missing-crate-dependency/rmake.rs17
-rw-r--r--tests/run-make/unstable-flag-required/Makefile4
-rw-r--r--tests/run-make/unstable-flag-required/rmake.rs12
10 files changed, 71 insertions, 32 deletions
diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt
index 96ba648a007..745f00c4f52 100644
--- a/src/tools/tidy/src/allowed_run_make_makefiles.txt
+++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt
@@ -47,7 +47,6 @@ run-make/issue-36710/Makefile
 run-make/issue-47551/Makefile
 run-make/issue-69368/Makefile
 run-make/issue-84395-lto-embed-bitcode/Makefile
-run-make/issue-85401-static-mir/Makefile
 run-make/issue-88756-default-output/Makefile
 run-make/issue-97463-abi-param-passing/Makefile
 run-make/jobserver-error/Makefile
@@ -68,7 +67,6 @@ run-make/macos-deployment-target/Makefile
 run-make/macos-fat-archive/Makefile
 run-make/manual-link/Makefile
 run-make/min-global-align/Makefile
-run-make/missing-crate-dependency/Makefile
 run-make/native-link-modifier-bundle/Makefile
 run-make/native-link-modifier-whole-archive/Makefile
 run-make/no-alloc-shim/Makefile
@@ -113,5 +111,4 @@ run-make/test-benches/Makefile
 run-make/thumb-none-cortex-m/Makefile
 run-make/thumb-none-qemu/Makefile
 run-make/translation/Makefile
-run-make/unstable-flag-required/Makefile
 run-make/x86_64-fortanix-unknown-sgx-lvi/Makefile
diff --git a/tests/run-make/issue-85401-static-mir/bar.rs b/tests/run-make/ice-static-mir/bar.rs
index 15b12ecf36f..15b12ecf36f 100644
--- a/tests/run-make/issue-85401-static-mir/bar.rs
+++ b/tests/run-make/ice-static-mir/bar.rs
diff --git a/tests/run-make/issue-85401-static-mir/baz.rs b/tests/run-make/ice-static-mir/baz.rs
index 2ff4c51e5d2..2ff4c51e5d2 100644
--- a/tests/run-make/issue-85401-static-mir/baz.rs
+++ b/tests/run-make/ice-static-mir/baz.rs
diff --git a/tests/run-make/issue-85401-static-mir/foo.rs b/tests/run-make/ice-static-mir/foo.rs
index d064c454600..d064c454600 100644
--- a/tests/run-make/issue-85401-static-mir/foo.rs
+++ b/tests/run-make/ice-static-mir/foo.rs
diff --git a/tests/run-make/ice-static-mir/rmake.rs b/tests/run-make/ice-static-mir/rmake.rs
new file mode 100644
index 00000000000..2d4ffa379b6
--- /dev/null
+++ b/tests/run-make/ice-static-mir/rmake.rs
@@ -0,0 +1,42 @@
+// Trying to access mid-level internal representation (MIR) in statics
+// used to cause an internal compiler error (ICE), now handled as a proper
+// error since #100211. This test checks that the correct error is printed
+// during the linking process, and not the ICE.
+// See https://github.com/rust-lang/rust/issues/85401
+
+use run_make_support::{bin_name, rust_lib_name, rustc};
+
+fn main() {
+    rustc()
+        .crate_type("rlib")
+        .crate_name("foo")
+        .arg("-Crelocation-model=pic")
+        .edition("2018")
+        .input("foo.rs")
+        .arg("-Zalways-encode-mir=yes")
+        .emit("metadata")
+        .output("libfoo.rmeta")
+        .run();
+    rustc()
+        .crate_type("rlib")
+        .crate_name("bar")
+        .arg("-Crelocation-model=pic")
+        .edition("2018")
+        .input("bar.rs")
+        .output(rust_lib_name("bar"))
+        .extern_("foo", "libfoo.rmeta")
+        .run();
+    rustc()
+        .crate_type("bin")
+        .crate_name("baz")
+        .arg("-Crelocation-model=pic")
+        .edition("2018")
+        .input("baz.rs")
+        .output(bin_name("baz"))
+        .extern_("bar", rust_lib_name("bar"))
+        .run_fail()
+        .assert_stderr_contains(
+            "crate `foo` required to be available in rlib format, but was not found in this form",
+        )
+        .assert_stdout_not_contains("internal compiler error");
+}
diff --git a/tests/run-make/issue-85401-static-mir/Makefile b/tests/run-make/issue-85401-static-mir/Makefile
deleted file mode 100644
index 47a36b6e453..00000000000
--- a/tests/run-make/issue-85401-static-mir/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-include ../tools.mk
-
-# Regression test for issue #85401
-# Verify that we do not ICE when trying to access MIR for statics,
-# but emit an error when linking.
-
-OUTPUT_FILE := $(TMPDIR)/build-output
-
-all:
-	$(RUSTC) --crate-type rlib --crate-name foo -Crelocation-model=pic --edition=2018 foo.rs -Zalways-encode-mir=yes --emit metadata -o $(TMPDIR)/libfoo.rmeta
-	$(RUSTC) --crate-type rlib --crate-name bar -Crelocation-model=pic --edition=2018 bar.rs -o $(TMPDIR)/libbar.rlib --extern=foo=$(TMPDIR)/libfoo.rmeta
-	$(RUSTC) --crate-type bin --crate-name baz -Crelocation-model=pic --edition=2018 baz.rs -o $(TMPDIR)/baz -L $(TMPDIR) --extern=bar=$(TMPDIR)/libbar.rlib > $(OUTPUT_FILE) 2>&1; [ $$? -eq 1 ]
-	cat  $(OUTPUT_FILE)
-	$(CGREP) 'crate `foo` required to be available in rlib format, but was not found in this form' < $(OUTPUT_FILE)
-	# -v tests are fragile, hopefully this text won't change
-	$(CGREP) -v "internal compiler error" < $(OUTPUT_FILE)
diff --git a/tests/run-make/missing-crate-dependency/Makefile b/tests/run-make/missing-crate-dependency/Makefile
deleted file mode 100644
index 7c271ab8a90..00000000000
--- a/tests/run-make/missing-crate-dependency/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-include ../tools.mk
-
-all:
-	$(RUSTC) --crate-type=rlib crateA.rs
-	$(RUSTC) --crate-type=rlib crateB.rs
-	$(call REMOVE_RLIBS,crateA)
-	# Ensure crateC fails to compile since dependency crateA is missing
-	$(RUSTC) crateC.rs 2>&1 | \
-		$(CGREP) 'can'"'"'t find crate for `crateA` which `crateB` depends on'
diff --git a/tests/run-make/missing-crate-dependency/rmake.rs b/tests/run-make/missing-crate-dependency/rmake.rs
new file mode 100644
index 00000000000..dae77032f7d
--- /dev/null
+++ b/tests/run-make/missing-crate-dependency/rmake.rs
@@ -0,0 +1,17 @@
+// A simple smoke test to check that rustc fails compilation
+// and outputs a helpful message when a dependency is missing
+// in a dependency chain.
+// See https://github.com/rust-lang/rust/issues/12146
+
+use run_make_support::{rfs, rust_lib_name, rustc};
+
+fn main() {
+    rustc().crate_type("rlib").input("crateA.rs").run();
+    rustc().crate_type("rlib").input("crateB.rs").run();
+    rfs::remove_file(rust_lib_name("crateA"));
+    // Ensure that crateC fails to compile, as the crateA dependency is missing.
+    rustc()
+        .input("crateC.rs")
+        .run_fail()
+        .assert_stderr_contains("can't find crate for `crateA` which `crateB` depends on");
+}
diff --git a/tests/run-make/unstable-flag-required/Makefile b/tests/run-make/unstable-flag-required/Makefile
deleted file mode 100644
index 17dd15b079c..00000000000
--- a/tests/run-make/unstable-flag-required/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-include ../tools.mk
-
-all:
-	$(RUSTDOC) --output-format=json x.html 2>&1 | diff - output-format-json.stderr
diff --git a/tests/run-make/unstable-flag-required/rmake.rs b/tests/run-make/unstable-flag-required/rmake.rs
new file mode 100644
index 00000000000..c521436c203
--- /dev/null
+++ b/tests/run-make/unstable-flag-required/rmake.rs
@@ -0,0 +1,12 @@
+// The flag `--output-format` is unauthorized on beta and stable releases, which led
+// to confusion for maintainers doing testing on nightly. Tying it to an unstable flag
+// elucidates this, and this test checks that `--output-format` cannot be passed on its
+// own.
+// See https://github.com/rust-lang/rust/pull/82497
+
+use run_make_support::{diff, rustdoc};
+
+fn main() {
+    let out = rustdoc().output_format("json").input("x.html").run_fail().stderr_utf8();
+    diff().expected_file("output-format-json.stderr").actual_text("actual-json", out).run();
+}