about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-07-19 10:48:04 +0200
committerGitHub <noreply@github.com>2024-07-19 10:48:04 +0200
commit7161e2dc98687dab427f94b99f960927bed10d82 (patch)
tree7114c9af29c857eb88162e7dd21537e0045652d1
parentc86e13f330b8689d21bc258f50e96d36196733b3 (diff)
parentfc4404c230c2a7a818e73255d3ceb877b30b592f (diff)
downloadrust-7161e2dc98687dab427f94b99f960927bed10d82.tar.gz
rust-7161e2dc98687dab427f94b99f960927bed10d82.zip
Rollup merge of #127621 - Oneirical:hypnotest-show, r=jieyouxu
Rewrite and rename `issue-22131` and `issue-26006` `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: x86_64-msvc
try-job: i686-mingw
-rw-r--r--src/tools/tidy/src/allowed_run_make_makefiles.txt2
-rw-r--r--tests/run-make/invalid-symlink-search-path/in/bar/lib.rs5
-rw-r--r--tests/run-make/invalid-symlink-search-path/in/foo/lib.rs3
-rw-r--r--tests/run-make/invalid-symlink-search-path/rmake.rs33
-rw-r--r--tests/run-make/issue-22131/Makefile8
-rw-r--r--tests/run-make/issue-26006/Makefile17
-rw-r--r--tests/run-make/issue-26006/in/libc/lib.rs3
-rw-r--r--tests/run-make/issue-26006/in/time/lib.rs4
-rw-r--r--tests/run-make/rustdoc-cfgspec-parsing/foo.rs (renamed from tests/run-make/issue-22131/foo.rs)0
-rw-r--r--tests/run-make/rustdoc-cfgspec-parsing/rmake.rs21
10 files changed, 62 insertions, 34 deletions
diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt
index 745f00c4f52..c49684b45cb 100644
--- a/src/tools/tidy/src/allowed_run_make_makefiles.txt
+++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt
@@ -38,8 +38,6 @@ run-make/interdependent-c-libraries/Makefile
 run-make/issue-107094/Makefile
 run-make/issue-14698/Makefile
 run-make/issue-15460/Makefile
-run-make/issue-22131/Makefile
-run-make/issue-26006/Makefile
 run-make/issue-28595/Makefile
 run-make/issue-33329/Makefile
 run-make/issue-35164/Makefile
diff --git a/tests/run-make/invalid-symlink-search-path/in/bar/lib.rs b/tests/run-make/invalid-symlink-search-path/in/bar/lib.rs
new file mode 100644
index 00000000000..58c3e33bb6c
--- /dev/null
+++ b/tests/run-make/invalid-symlink-search-path/in/bar/lib.rs
@@ -0,0 +1,5 @@
+extern crate foo;
+
+pub fn main() {
+    let _ = foo::hello_world();
+}
diff --git a/tests/run-make/invalid-symlink-search-path/in/foo/lib.rs b/tests/run-make/invalid-symlink-search-path/in/foo/lib.rs
new file mode 100644
index 00000000000..07b66f8ca45
--- /dev/null
+++ b/tests/run-make/invalid-symlink-search-path/in/foo/lib.rs
@@ -0,0 +1,3 @@
+pub fn hello_world() -> i32 {
+    42
+}
diff --git a/tests/run-make/invalid-symlink-search-path/rmake.rs b/tests/run-make/invalid-symlink-search-path/rmake.rs
new file mode 100644
index 00000000000..ed2cd9c4bd2
--- /dev/null
+++ b/tests/run-make/invalid-symlink-search-path/rmake.rs
@@ -0,0 +1,33 @@
+// In this test, the symlink created is invalid (valid relative to the root, but not
+// relatively to where it is located), and used to cause an internal
+// compiler error (ICE) when passed as a library search path. This was fixed in #26044,
+// and this test checks that the invalid symlink is instead simply ignored.
+// See https://github.com/rust-lang/rust/issues/26006
+
+//@ needs-symlink
+//Reason: symlink requires elevated permission in Windows
+
+use run_make_support::{rfs, rustc};
+
+fn main() {
+    // We create two libs: `bar` which depends on `foo`. We need to compile `foo` first.
+    rfs::create_dir("out");
+    rfs::create_dir("out/foo");
+    rustc()
+        .input("in/foo/lib.rs")
+        .crate_name("foo")
+        .crate_type("lib")
+        .metadata("foo")
+        .output("out/foo/libfoo.rlib")
+        .run();
+    rfs::create_dir("out/bar");
+    rfs::create_dir("out/bar/deps");
+    rfs::create_symlink("out/foo/libfoo.rlib", "out/bar/deps/libfoo.rlib");
+    // Check that the invalid symlink does not cause an ICE
+    rustc()
+        .input("in/bar/lib.rs")
+        .library_search_path("dependency=out/bar/deps")
+        .run_fail()
+        .assert_exit_code(1)
+        .assert_stderr_not_contains("internal compiler error");
+}
diff --git a/tests/run-make/issue-22131/Makefile b/tests/run-make/issue-22131/Makefile
deleted file mode 100644
index 4f33a4659cc..00000000000
--- a/tests/run-make/issue-22131/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# ignore-cross-compile
-include ../tools.mk
-
-all: foo.rs
-	$(RUSTC) --cfg 'feature="bar"' --crate-type lib foo.rs
-	$(RUSTDOC) --test --cfg 'feature="bar"' \
-		-L $(TMPDIR) foo.rs |\
-		$(CGREP) 'foo.rs - foo (line 1) ... ok'
diff --git a/tests/run-make/issue-26006/Makefile b/tests/run-make/issue-26006/Makefile
deleted file mode 100644
index b679c121530..00000000000
--- a/tests/run-make/issue-26006/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-# ignore-cross-compile
-include ../tools.mk
-
-# ignore-windows
-
-OUT := $(TMPDIR)/out
-
-all: time
-
-time: libc
-	mkdir -p $(OUT)/time $(OUT)/time/deps
-	ln -sf $(OUT)/libc/liblibc.rlib $(OUT)/time/deps/
-	$(RUSTC) in/time/lib.rs -Ldependency=$(OUT)/time/deps/
-
-libc:
-	mkdir -p $(OUT)/libc
-	$(RUSTC) in/libc/lib.rs --crate-name=libc -Cmetadata=foo -o $(OUT)/libc/liblibc.rlib
diff --git a/tests/run-make/issue-26006/in/libc/lib.rs b/tests/run-make/issue-26006/in/libc/lib.rs
deleted file mode 100644
index bad155a99bd..00000000000
--- a/tests/run-make/issue-26006/in/libc/lib.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-#![crate_type = "rlib"]
-
-pub fn something() {}
diff --git a/tests/run-make/issue-26006/in/time/lib.rs b/tests/run-make/issue-26006/in/time/lib.rs
deleted file mode 100644
index 51ed27cd713..00000000000
--- a/tests/run-make/issue-26006/in/time/lib.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-#![feature(rustc_private)]
-extern crate libc;
-
-fn main() {}
diff --git a/tests/run-make/issue-22131/foo.rs b/tests/run-make/rustdoc-cfgspec-parsing/foo.rs
index 7b955a07b97..7b955a07b97 100644
--- a/tests/run-make/issue-22131/foo.rs
+++ b/tests/run-make/rustdoc-cfgspec-parsing/foo.rs
diff --git a/tests/run-make/rustdoc-cfgspec-parsing/rmake.rs b/tests/run-make/rustdoc-cfgspec-parsing/rmake.rs
new file mode 100644
index 00000000000..9c8c71b19a6
--- /dev/null
+++ b/tests/run-make/rustdoc-cfgspec-parsing/rmake.rs
@@ -0,0 +1,21 @@
+// A rustdoc bug caused the `feature=bar` syntax for the cfg flag to be interpreted
+// wrongly, with `feature=bar` instead of just `bar` being understood as the feature name.
+// After this was fixed in #22135, this test checks that this bug does not make a resurgence.
+// See https://github.com/rust-lang/rust/issues/22131
+
+//@ ignore-cross-compile
+// Reason: rustdoc fails to find the "foo" crate
+
+use run_make_support::{cwd, rustc, rustdoc};
+
+fn main() {
+    rustc().cfg(r#"feature="bar""#).crate_type("lib").input("foo.rs").run();
+    rustdoc()
+        .arg("--test")
+        .arg("--cfg")
+        .arg(r#"feature="bar""#)
+        .library_search_path(cwd())
+        .input("foo.rs")
+        .run()
+        .assert_stdout_contains("foo.rs - foo (line 1) ... ok");
+}