mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-04 02:54:00 +00:00
Rollup merge of #125683 - Oneirical:patience-testing-test, r=jieyouxu
Rewrite `suspicious-library`, `resolve-rename` and `incr-prev-body-beyond-eof` `run-make` tests in `rmake.rs` format Part of #121876 and the associated [Google Summer of Code project](https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html). Some oddly specific ignore flags in `incr-prev-body-beyond-eof`: ```rs // ignore-none // ignore-nvptx64-nvidia-cuda ``` it could be interesting to run a try job, but it seems there is no nvidia-cuda in the CI settings (`jobs.yml`). try-job: armhf-gnu
This commit is contained in:
commit
0f2b34acdc
@ -799,6 +799,7 @@ const KNOWN_DIRECTIVE_NAMES: &[&str] = &[
|
||||
"ignore-none",
|
||||
"ignore-nto",
|
||||
"ignore-nvptx64",
|
||||
"ignore-nvptx64-nvidia-cuda",
|
||||
"ignore-openbsd",
|
||||
"ignore-pass",
|
||||
"ignore-remote",
|
||||
|
@ -69,6 +69,12 @@ impl Rustc {
|
||||
self
|
||||
}
|
||||
|
||||
/// Add a suffix in each output filename.
|
||||
pub fn extra_filename(&mut self, suffix: &str) -> &mut Self {
|
||||
self.cmd.arg(format!("-Cextra-filename={suffix}"));
|
||||
self
|
||||
}
|
||||
|
||||
/// Specify type(s) of output files to generate.
|
||||
pub fn emit(&mut self, kinds: &str) -> &mut Self {
|
||||
self.cmd.arg(format!("--emit={kinds}"));
|
||||
|
@ -70,7 +70,6 @@ run-make/inaccessible-temp-dir/Makefile
|
||||
run-make/include_bytes_deps/Makefile
|
||||
run-make/incr-add-rust-src-component/Makefile
|
||||
run-make/incr-foreign-head-span/Makefile
|
||||
run-make/incr-prev-body-beyond-eof/Makefile
|
||||
run-make/incremental-debugger-visualizer/Makefile
|
||||
run-make/incremental-session-fail/Makefile
|
||||
run-make/inline-always-many-cgu/Makefile
|
||||
@ -202,7 +201,6 @@ run-make/remap-path-prefix-dwarf/Makefile
|
||||
run-make/remap-path-prefix/Makefile
|
||||
run-make/reproducible-build-2/Makefile
|
||||
run-make/reproducible-build/Makefile
|
||||
run-make/resolve-rename/Makefile
|
||||
run-make/return-non-c-like-enum-from-c/Makefile
|
||||
run-make/return-non-c-like-enum/Makefile
|
||||
run-make/rlib-chain/Makefile
|
||||
@ -232,7 +230,6 @@ run-make/static-pie/Makefile
|
||||
run-make/staticlib-blank-lib/Makefile
|
||||
run-make/staticlib-dylib-linkage/Makefile
|
||||
run-make/std-core-cycle/Makefile
|
||||
run-make/suspicious-library/Makefile
|
||||
run-make/symbol-mangling-hashed/Makefile
|
||||
run-make/symbol-visibility/Makefile
|
||||
run-make/symbols-include-type-name/Makefile
|
||||
|
@ -1,19 +0,0 @@
|
||||
# ignore-none no-std is not supported
|
||||
# ignore-nvptx64-nvidia-cuda FIXME: can't find crate for `std`
|
||||
|
||||
include ../tools.mk
|
||||
|
||||
# Tests that we don't ICE during incremental compilation after modifying a
|
||||
# function span such that its previous end line exceeds the number of lines
|
||||
# in the new file, but its start line/column and length remain the same.
|
||||
|
||||
SRC=$(TMPDIR)/src
|
||||
INCR=$(TMPDIR)/incr
|
||||
|
||||
all:
|
||||
mkdir $(SRC)
|
||||
mkdir $(INCR)
|
||||
cp a.rs $(SRC)/main.rs
|
||||
$(RUSTC) -C incremental=$(INCR) $(SRC)/main.rs --target $(TARGET)
|
||||
cp b.rs $(SRC)/main.rs
|
||||
$(RUSTC) -C incremental=$(INCR) $(SRC)/main.rs --target $(TARGET)
|
27
tests/run-make/incr-prev-body-beyond-eof/rmake.rs
Normal file
27
tests/run-make/incr-prev-body-beyond-eof/rmake.rs
Normal file
@ -0,0 +1,27 @@
|
||||
// After modifying the span of a function, if the length of
|
||||
// the span remained the same but the end line number became different,
|
||||
// this would cause an internal compiler error (ICE), fixed in #76256.
|
||||
|
||||
// This test compiles main.rs twice, first with end line 16 and
|
||||
// then with end line 12. If compilation is successful, the end line
|
||||
// was hashed by rustc in addition to the span length, and the fix still
|
||||
// works.
|
||||
|
||||
//@ ignore-none
|
||||
// reason: no-std is not supported
|
||||
|
||||
//@ ignore-nvptx64-nvidia-cuda
|
||||
// FIXME: can't find crate for `std`
|
||||
|
||||
use run_make_support::{rustc, tmp_dir};
|
||||
use std::fs;
|
||||
|
||||
fn main() {
|
||||
// FIXME(Oneirical): Use run_make_support::fs_wrapper here.
|
||||
fs::create_dir(tmp_dir().join("src")).unwrap();
|
||||
fs::create_dir(tmp_dir().join("incr")).unwrap();
|
||||
fs::copy("a.rs", tmp_dir().join("src/main.rs")).unwrap();
|
||||
rustc().incremental(tmp_dir().join("incr")).input(tmp_dir().join("src/main.rs")).run();
|
||||
fs::copy("b.rs", tmp_dir().join("src/main.rs")).unwrap();
|
||||
rustc().incremental(tmp_dir().join("incr")).input(tmp_dir().join("src/main.rs")).run();
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
include ../tools.mk
|
||||
|
||||
all:
|
||||
$(RUSTC) -C extra-filename=-hash foo.rs
|
||||
$(RUSTC) bar.rs
|
||||
mv $(TMPDIR)/libfoo-hash.rlib $(TMPDIR)/libfoo-another-hash.rlib
|
||||
$(RUSTC) baz.rs
|
16
tests/run-make/resolve-rename/rmake.rs
Normal file
16
tests/run-make/resolve-rename/rmake.rs
Normal file
@ -0,0 +1,16 @@
|
||||
// If a library is compiled with -C extra-filename, the rust compiler
|
||||
// will take this into account when searching for libraries. However,
|
||||
// if that library is then renamed, the rust compiler should fall back
|
||||
// to its regular library location logic and not immediately fail to find
|
||||
// the renamed library.
|
||||
// See https://github.com/rust-lang/rust/pull/49253
|
||||
|
||||
use run_make_support::{rustc, tmp_dir};
|
||||
use std::fs;
|
||||
fn main() {
|
||||
rustc().extra_filename("-hash").input("foo.rs").run();
|
||||
rustc().input("bar.rs").run();
|
||||
fs::rename(tmp_dir().join("libfoo-hash.rlib"), tmp_dir().join("libfoo-another-hash.rlib"))
|
||||
.unwrap();
|
||||
rustc().input("baz.rs").run();
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
# ignore-cross-compile
|
||||
include ../tools.mk
|
||||
|
||||
all:
|
||||
$(RUSTC) foo.rs -C prefer-dynamic
|
||||
touch $(call DYLIB,foo-something-special)
|
||||
touch $(call DYLIB,foo-something-special2)
|
||||
$(RUSTC) bar.rs
|
14
tests/run-make/suspicious-library/rmake.rs
Normal file
14
tests/run-make/suspicious-library/rmake.rs
Normal file
@ -0,0 +1,14 @@
|
||||
// This test creates some fake dynamic libraries with nothing inside,
|
||||
// and checks if rustc avoids them and successfully compiles as a result.
|
||||
|
||||
//@ ignore-cross-compile
|
||||
|
||||
use run_make_support::{dynamic_lib, rustc};
|
||||
use std::fs::File;
|
||||
|
||||
fn main() {
|
||||
rustc().input("foo.rs").arg("-Cprefer-dynamic").run();
|
||||
File::create(dynamic_lib("foo-something-special")).unwrap();
|
||||
File::create(dynamic_lib("foo-something-special2")).unwrap();
|
||||
rustc().input("bar.rs").run();
|
||||
}
|
Loading…
Reference in New Issue
Block a user