about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-06-20 18:21:01 +0000
committerbors <bors@rust-lang.org>2024-06-20 18:21:01 +0000
commit433355166d769afc9c19f761cc7efc4d152e9a2c (patch)
tree2412ee497bc589da0ba13b9f3ccc3ec166d745bb /tests
parentcb8a7ea0ed866295e0f65725cea6662bea51971a (diff)
parent7b5ed5a66c7e1ec0d2d8ba3657a4048ceea36988 (diff)
downloadrust-433355166d769afc9c19f761cc7efc4d152e9a2c.tar.gz
rust-433355166d769afc9c19f761cc7efc4d152e9a2c.zip
Auto merge of #126745 - matthiaskrgr:rollup-xagplef, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #126095 (Migrate `link-args-order`, `ls-metadata` and `lto-readonly-lib` `run-make` tests to `rmake`)
 - #126629 (Migrate `run-make/compressed-debuginfo` to `rmake.rs`)
 - #126644 (Rewrite `extern-flag-rename-transitive`. `debugger-visualizer-dep-info`, `metadata-flag-frobs-symbols`, `extern-overrides-distribution` and `forced-unwind-terminate-pof` `run-make` tests to rmake)
 - #126735 (collect attrs in const block expr)
 - #126737 (Remove `feature(const_closures)` from libcore)
 - #126740 (add `needs-unwind` to UI test)

r? `@ghost`
`@rustbot` modify labels: rollup
Diffstat (limited to 'tests')
-rw-r--r--tests/run-make/compressed-debuginfo/Makefile14
-rw-r--r--tests/run-make/compressed-debuginfo/rmake.rs36
-rw-r--r--tests/run-make/debugger-visualizer-dep-info/Makefile9
-rw-r--r--tests/run-make/debugger-visualizer-dep-info/rmake.rs11
-rw-r--r--tests/run-make/extern-flag-rename-transitive/Makefile7
-rw-r--r--tests/run-make/extern-flag-rename-transitive/rmake.rs14
-rw-r--r--tests/run-make/extern-overrides-distribution/Makefile6
-rw-r--r--tests/run-make/extern-overrides-distribution/rmake.rs14
-rw-r--r--tests/run-make/forced-unwind-terminate-pof/Makefile9
-rw-r--r--tests/run-make/forced-unwind-terminate-pof/rmake.rs16
-rw-r--r--tests/run-make/link-args-order/Makefile10
-rw-r--r--tests/run-make/link-args-order/rmake.rs30
-rw-r--r--tests/run-make/ls-metadata/Makefile8
-rw-r--r--tests/run-make/ls-metadata/rmake.rs17
-rw-r--r--tests/run-make/lto-readonly-lib/Makefile13
-rw-r--r--tests/run-make/lto-readonly-lib/rmake.rs19
-rw-r--r--tests/run-make/metadata-flag-frobs-symbols/Makefile11
-rw-r--r--tests/run-make/metadata-flag-frobs-symbols/rmake.rs20
-rw-r--r--tests/ui/lifetimes/tail-expr-lock-poisoning.rs1
-rw-r--r--tests/ui/resolve/path-attr-in-const-block.rs9
-rw-r--r--tests/ui/resolve/path-attr-in-const-block.stderr8
21 files changed, 195 insertions, 87 deletions
diff --git a/tests/run-make/compressed-debuginfo/Makefile b/tests/run-make/compressed-debuginfo/Makefile
deleted file mode 100644
index d2f24dde00d..00000000000
--- a/tests/run-make/compressed-debuginfo/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-# ignore-cross-compile
-include ../tools.mk
-
-# only-linux
-#
-# This tests debuginfo-compression.
-
-all: zlib zstandard
-
-zlib:
-	test "`$(RUSTC) --crate-name=foo --crate-type=lib --emit=obj -C debuginfo=full -Z debuginfo-compression=zlib foo.rs 2>&1 | sed 's/.*unknown.*zlib.*/missing/' | head -n 1`" = missing || readelf -t $(TMPDIR)/foo.o | grep -q ZLIB
-
-zstandard:
-	test "`$(RUSTC) --crate-name=foo --crate-type=lib --emit=obj -C debuginfo=full -Z debuginfo-compression=zstd foo.rs 2>&1 | sed 's/.*unknown.*zstd.*/missing/' | head -n 1`" = missing || readelf -t $(TMPDIR)/foo.o | grep -q ZST
diff --git a/tests/run-make/compressed-debuginfo/rmake.rs b/tests/run-make/compressed-debuginfo/rmake.rs
new file mode 100644
index 00000000000..9c6d50ab243
--- /dev/null
+++ b/tests/run-make/compressed-debuginfo/rmake.rs
@@ -0,0 +1,36 @@
+// Checks the `debuginfo-compression` option.
+
+//@ only-linux
+//@ ignore-cross-compile
+
+// FIXME: This test isn't comprehensive and isn't covering all possible combinations.
+
+use run_make_support::{assert_contains, cmd, run_in_tmpdir, rustc};
+
+fn check_compression(compression: &str, to_find: &str) {
+    run_in_tmpdir(|| {
+        let out = rustc()
+            .crate_name("foo")
+            .crate_type("lib")
+            .emit("obj")
+            .arg("-Cdebuginfo=full")
+            .arg(&format!("-Zdebuginfo-compression={compression}"))
+            .input("foo.rs")
+            .run();
+        let stderr = out.stderr_utf8();
+        if stderr.is_empty() {
+            // FIXME: `readelf` might need to be replaced with `llvm-readelf`.
+            cmd("readelf").arg("-t").arg("foo.o").run().assert_stdout_contains(to_find);
+        } else {
+            assert_contains(
+                &stderr,
+                &format!("unknown debuginfo compression algorithm {compression}"),
+            );
+        }
+    });
+}
+
+fn main() {
+    check_compression("zlib", "ZLIB");
+    check_compression("zstd", "ZSTD");
+}
diff --git a/tests/run-make/debugger-visualizer-dep-info/Makefile b/tests/run-make/debugger-visualizer-dep-info/Makefile
deleted file mode 100644
index 0877998a74f..00000000000
--- a/tests/run-make/debugger-visualizer-dep-info/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-include ../tools.mk
-
-# This test makes sure that files referenced via #[debugger_visualizer] are
-# included in `--emit dep-info` output.
-
-all:
-	$(RUSTC) --emit dep-info main.rs
-	$(CGREP) "foo.py" < $(TMPDIR)/main.d
-	$(CGREP) "my_visualizers/bar.natvis" < $(TMPDIR)/main.d
diff --git a/tests/run-make/debugger-visualizer-dep-info/rmake.rs b/tests/run-make/debugger-visualizer-dep-info/rmake.rs
new file mode 100644
index 00000000000..65ffb2373e7
--- /dev/null
+++ b/tests/run-make/debugger-visualizer-dep-info/rmake.rs
@@ -0,0 +1,11 @@
+// This test checks that files referenced via #[debugger_visualizer] are
+// included in `--emit dep-info` output.
+// See https://github.com/rust-lang/rust/pull/111641
+
+use run_make_support::{invalid_utf8_contains, rustc};
+
+fn main() {
+    rustc().emit("dep-info").input("main.rs").run();
+    invalid_utf8_contains("main.d", "foo.py");
+    invalid_utf8_contains("main.d", "my_visualizers/bar.natvis");
+}
diff --git a/tests/run-make/extern-flag-rename-transitive/Makefile b/tests/run-make/extern-flag-rename-transitive/Makefile
deleted file mode 100644
index d16a8e20868..00000000000
--- a/tests/run-make/extern-flag-rename-transitive/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-include ../tools.mk
-
-all:
-	$(RUSTC) foo.rs
-	$(RUSTC) bar.rs
-	$(RUSTC) baz.rs --extern a=$(TMPDIR)/libfoo.rlib
-
diff --git a/tests/run-make/extern-flag-rename-transitive/rmake.rs b/tests/run-make/extern-flag-rename-transitive/rmake.rs
new file mode 100644
index 00000000000..0090d487f03
--- /dev/null
+++ b/tests/run-make/extern-flag-rename-transitive/rmake.rs
@@ -0,0 +1,14 @@
+// In this test, baz.rs is looking for an extern crate "a" which
+// does not exist, and can only run through the --extern rustc flag
+// defining that the "a" crate is in fact just "foo". This test
+// checks that the --extern flag takes precedence over the extern
+// crate statement in the code.
+// See https://github.com/rust-lang/rust/pull/52723
+
+use run_make_support::{rust_lib_name, rustc};
+
+fn main() {
+    rustc().input("foo.rs").run();
+    rustc().input("bar.rs").run();
+    rustc().input("baz.rs").extern_("a", rust_lib_name("foo")).run();
+}
diff --git a/tests/run-make/extern-overrides-distribution/Makefile b/tests/run-make/extern-overrides-distribution/Makefile
deleted file mode 100644
index bfd0dd6991b..00000000000
--- a/tests/run-make/extern-overrides-distribution/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# ignore-cross-compile
-include ../tools.mk
-
-all:
-	$(RUSTC) libc.rs -Cmetadata=foo
-	$(RUSTC) main.rs --extern libc=$(TMPDIR)/liblibc.rlib
diff --git a/tests/run-make/extern-overrides-distribution/rmake.rs b/tests/run-make/extern-overrides-distribution/rmake.rs
new file mode 100644
index 00000000000..bd2553d4134
--- /dev/null
+++ b/tests/run-make/extern-overrides-distribution/rmake.rs
@@ -0,0 +1,14 @@
+// The --extern flag should override any "crate_type" declarations in the
+// Rust files themselves. In this test, libc is compiled as "lib", but
+// main.rs will only run with an rlib, which checks if the --extern flag
+// is successfully overriding the default behaviour.
+// See https://github.com/rust-lang/rust/pull/21782
+
+//@ ignore-cross-compile
+
+use run_make_support::{rust_lib_name, rustc};
+
+fn main() {
+    rustc().input("libc.rs").metadata("foo").run();
+    rustc().input("main.rs").extern_("libc", rust_lib_name("libc")).run();
+}
diff --git a/tests/run-make/forced-unwind-terminate-pof/Makefile b/tests/run-make/forced-unwind-terminate-pof/Makefile
deleted file mode 100644
index 871621520b9..00000000000
--- a/tests/run-make/forced-unwind-terminate-pof/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# ignore-cross-compile
-# only-linux
-include ../tools.mk
-
-all: foo
-	$(call RUN,foo) | $(CGREP) -v "cannot unwind"
-
-foo: foo.rs
-	$(RUSTC) $<
diff --git a/tests/run-make/forced-unwind-terminate-pof/rmake.rs b/tests/run-make/forced-unwind-terminate-pof/rmake.rs
new file mode 100644
index 00000000000..320ddb172b6
--- /dev/null
+++ b/tests/run-make/forced-unwind-terminate-pof/rmake.rs
@@ -0,0 +1,16 @@
+// During a forced unwind, crossing the non-Plain Old Frame
+// would define the forced unwind as undefined behaviour, and
+// immediately abort the unwinding process. This test checks
+// that the forced unwinding takes precedence.
+// See https://github.com/rust-lang/rust/issues/101469
+
+//@ ignore-cross-compile
+//@ ignore-windows
+//Reason: pthread (POSIX threads) is not available on Windows
+
+use run_make_support::{run, rustc};
+
+fn main() {
+    rustc().input("foo.rs").run();
+    run("foo").assert_stdout_not_contains("cannot unwind");
+}
diff --git a/tests/run-make/link-args-order/Makefile b/tests/run-make/link-args-order/Makefile
deleted file mode 100644
index c562cc1b396..00000000000
--- a/tests/run-make/link-args-order/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# ignore-msvc
-
-include ../tools.mk
-
-RUSTC_FLAGS = -C linker-flavor=ld -C link-arg=a -C link-args="b c" -C link-args="d e" -C link-arg=f
-RUSTC_FLAGS_PRE = -C linker-flavor=ld -Z pre-link-arg=a -Z pre-link-args="b c" -Z pre-link-args="d e" -Z pre-link-arg=f
-
-all:
-	$(RUSTC) $(RUSTC_FLAGS) empty.rs 2>&1 | $(CGREP) '"a" "b" "c" "d" "e" "f"'
-	$(RUSTC) $(RUSTC_FLAGS_PRE) empty.rs 2>&1 | $(CGREP) '"a" "b" "c" "d" "e" "f"'
diff --git a/tests/run-make/link-args-order/rmake.rs b/tests/run-make/link-args-order/rmake.rs
new file mode 100644
index 00000000000..d238ad23f27
--- /dev/null
+++ b/tests/run-make/link-args-order/rmake.rs
@@ -0,0 +1,30 @@
+// Passing linker arguments to the compiler used to be lost or reordered in a messy way
+// as they were passed further to the linker. This was fixed in #70665, and this test
+// checks that linker arguments remain intact and in the order they were originally passed in.
+// See https://github.com/rust-lang/rust/pull/70665
+
+//@ ignore-msvc
+// Reason: the ld linker does not exist on Windows.
+
+use run_make_support::rustc;
+
+fn main() {
+    rustc()
+        .input("empty.rs")
+        .linker_flavor("ld")
+        .link_arg("a")
+        .link_args("b c")
+        .link_args("d e")
+        .link_arg("f")
+        .run_fail()
+        .assert_stderr_contains(r#""a" "b" "c" "d" "e" "f""#);
+    rustc()
+        .input("empty.rs")
+        .linker_flavor("ld")
+        .arg("-Zpre-link-arg=a")
+        .arg("-Zpre-link-args=b c")
+        .arg("-Zpre-link-args=d e")
+        .arg("-Zpre-link-arg=f")
+        .run_fail()
+        .assert_stderr_contains(r#""a" "b" "c" "d" "e" "f""#);
+}
diff --git a/tests/run-make/ls-metadata/Makefile b/tests/run-make/ls-metadata/Makefile
deleted file mode 100644
index f03569baef7..00000000000
--- a/tests/run-make/ls-metadata/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# ignore-cross-compile
-include ../tools.mk
-
-all:
-	$(RUSTC) foo.rs
-	$(RUSTC) -Z ls=root $(TMPDIR)/foo
-	touch $(TMPDIR)/bar
-	$(RUSTC) -Z ls=root $(TMPDIR)/bar
diff --git a/tests/run-make/ls-metadata/rmake.rs b/tests/run-make/ls-metadata/rmake.rs
new file mode 100644
index 00000000000..0e60f2c4678
--- /dev/null
+++ b/tests/run-make/ls-metadata/rmake.rs
@@ -0,0 +1,17 @@
+// Passing invalid files to -Z ls (which lists the symbols
+// defined by a library crate) used to cause a segmentation fault.
+// As this was fixed in #11262, this test checks that no segfault
+// occurs when passing the invalid file `bar` to -Z ls.
+// See https://github.com/rust-lang/rust/issues/11259
+
+//@ ignore-cross-compile
+
+use run_make_support::fs_wrapper;
+use run_make_support::rustc;
+
+fn main() {
+    rustc().input("foo.rs").run();
+    rustc().arg("-Zls=root").input("foo").run();
+    fs_wrapper::create_file("bar");
+    rustc().arg("-Zls=root").input("bar").run();
+}
diff --git a/tests/run-make/lto-readonly-lib/Makefile b/tests/run-make/lto-readonly-lib/Makefile
deleted file mode 100644
index 11d944e3e3d..00000000000
--- a/tests/run-make/lto-readonly-lib/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# ignore-cross-compile
-include ../tools.mk
-
-all:
-	$(RUSTC) lib.rs
-
-	# the compiler needs to copy and modify the rlib file when performing
-	# LTO, so we should ensure that it can cope with the original rlib
-	# being read-only.
-	chmod 444 $(TMPDIR)/*.rlib
-
-	$(RUSTC) main.rs -C lto
-	$(call RUN,main)
diff --git a/tests/run-make/lto-readonly-lib/rmake.rs b/tests/run-make/lto-readonly-lib/rmake.rs
new file mode 100644
index 00000000000..9eb135addd9
--- /dev/null
+++ b/tests/run-make/lto-readonly-lib/rmake.rs
@@ -0,0 +1,19 @@
+// When the compiler is performing link time optimization, it will
+// need to copy the original rlib file, set the copy's permissions to read/write,
+// and modify that copy - even if the original
+// file is read-only. This test creates a read-only rlib, and checks that
+// compilation with LTO succeeds.
+// See https://github.com/rust-lang/rust/pull/17619
+
+//@ ignore-cross-compile
+
+use run_make_support::fs_wrapper;
+use run_make_support::{run, rust_lib_name, rustc, test_while_readonly};
+
+fn main() {
+    rustc().input("lib.rs").run();
+    test_while_readonly(rust_lib_name("lib"), || {
+        rustc().input("main.rs").arg("-Clto").run();
+        run("main");
+    });
+}
diff --git a/tests/run-make/metadata-flag-frobs-symbols/Makefile b/tests/run-make/metadata-flag-frobs-symbols/Makefile
deleted file mode 100644
index 53d7d065769..00000000000
--- a/tests/run-make/metadata-flag-frobs-symbols/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# ignore-cross-compile
-include ../tools.mk
-
-all:
-	$(RUSTC) foo.rs -C metadata=a -C extra-filename=-a
-	$(RUSTC) foo.rs -C metadata=b -C extra-filename=-b
-	$(RUSTC) bar.rs \
-		--extern foo1=$(TMPDIR)/libfoo-a.rlib \
-		--extern foo2=$(TMPDIR)/libfoo-b.rlib \
-		--print link-args
-	$(call RUN,bar)
diff --git a/tests/run-make/metadata-flag-frobs-symbols/rmake.rs b/tests/run-make/metadata-flag-frobs-symbols/rmake.rs
new file mode 100644
index 00000000000..938886957fb
--- /dev/null
+++ b/tests/run-make/metadata-flag-frobs-symbols/rmake.rs
@@ -0,0 +1,20 @@
+// In this test, foo.rs is compiled twice with different hashes tied to its
+// symbols thanks to the metadata flag. bar.rs then ensures that the memory locations
+// of foo's symbols are different even though they came from the same original source code.
+// This checks that the metadata flag is doing its job.
+// See https://github.com/rust-lang/rust/issues/14471
+
+//@ ignore-cross-compile
+
+use run_make_support::{run, rust_lib_name, rustc};
+
+fn main() {
+    rustc().input("foo.rs").metadata("a").extra_filename("-a").run();
+    rustc().input("foo.rs").metadata("b").extra_filename("-b").run();
+    rustc()
+        .input("bar.rs")
+        .extern_("foo1", rust_lib_name("foo-a"))
+        .extern_("foo2", rust_lib_name("foo-b"))
+        .run();
+    run("bar");
+}
diff --git a/tests/ui/lifetimes/tail-expr-lock-poisoning.rs b/tests/ui/lifetimes/tail-expr-lock-poisoning.rs
index 69b8f286d77..cdfd35304b4 100644
--- a/tests/ui/lifetimes/tail-expr-lock-poisoning.rs
+++ b/tests/ui/lifetimes/tail-expr-lock-poisoning.rs
@@ -3,6 +3,7 @@
 //@ [edition2024] compile-flags: -Zunstable-options
 //@ [edition2024] edition: 2024
 //@ run-pass
+//@ needs-unwind
 #![cfg_attr(edition2024, feature(shorter_tail_lifetimes))]
 
 use std::sync::Mutex;
diff --git a/tests/ui/resolve/path-attr-in-const-block.rs b/tests/ui/resolve/path-attr-in-const-block.rs
new file mode 100644
index 00000000000..076511d26d6
--- /dev/null
+++ b/tests/ui/resolve/path-attr-in-const-block.rs
@@ -0,0 +1,9 @@
+// issue#126516
+// issue#126647
+
+fn main() {
+    const {
+        #![path = foo!()]
+        //~^ ERROR: cannot find macro `foo` in this scope
+    }
+}
diff --git a/tests/ui/resolve/path-attr-in-const-block.stderr b/tests/ui/resolve/path-attr-in-const-block.stderr
new file mode 100644
index 00000000000..8f9e58157c8
--- /dev/null
+++ b/tests/ui/resolve/path-attr-in-const-block.stderr
@@ -0,0 +1,8 @@
+error: cannot find macro `foo` in this scope
+  --> $DIR/path-attr-in-const-block.rs:6:19
+   |
+LL |         #![path = foo!()]
+   |                   ^^^
+
+error: aborting due to 1 previous error
+