Auto merge of #128787 - Oneirical:infohazardous-deprogram, r=jieyouxu
Coalesce `dep-info`, `dep-info-spaces` and `dep-info-doesnt-run-much` `run-make` tests into `dep-info` rmake.rs
Part of #121876 and the associated [Google Summer of Code project](https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html).
This is one of the most ancient tests in the `run-make` directory and its Makefile does some unexpected things, like creating and deleting a `done` directory over and over, sleeping at certain times (this is the [commit](0d9fd8e2a1
) that added the `sleep`).
I tried to preserve the intent of the test, which is smoke-testing that `dep-info` works.
try-job: x86_64-msvc
try-job: i686-mingw
try-job: aarch64-gnu
try-job: aarch64-apple
try-job: test-various
try-job: armhf-gnu
try-job: dist-various-1
This commit is contained in:
commit
4b7d074d76
@ -1,8 +1,5 @@
|
||||
run-make/branch-protection-check-IBT/Makefile
|
||||
run-make/cat-and-grep-sanity-check/Makefile
|
||||
run-make/dep-info-doesnt-run-much/Makefile
|
||||
run-make/dep-info-spaces/Makefile
|
||||
run-make/dep-info/Makefile
|
||||
run-make/emit-to-stdout/Makefile
|
||||
run-make/extern-fn-reachable/Makefile
|
||||
run-make/incr-add-rust-src-component/Makefile
|
||||
|
@ -1,4 +0,0 @@
|
||||
include ../tools.mk
|
||||
|
||||
all:
|
||||
$(RUSTC) foo.rs --emit dep-info
|
@ -1,19 +0,0 @@
|
||||
include ../tools.mk
|
||||
|
||||
# ignore-windows
|
||||
# ignore-freebsd
|
||||
# FIXME: (windows: see `../dep-info/Makefile`)
|
||||
|
||||
all:
|
||||
cp lib.rs $(TMPDIR)/
|
||||
cp 'foo foo.rs' $(TMPDIR)/
|
||||
cp bar.rs $(TMPDIR)/
|
||||
$(RUSTC) --emit link,dep-info --crate-type=lib $(TMPDIR)/lib.rs
|
||||
sleep 1
|
||||
touch $(TMPDIR)/'foo foo.rs'
|
||||
-rm -f $(TMPDIR)/done
|
||||
$(MAKE) -drf Makefile.foo
|
||||
rm $(TMPDIR)/done
|
||||
pwd
|
||||
$(MAKE) -drf Makefile.foo
|
||||
rm $(TMPDIR)/done && exit 1 || exit 0
|
@ -1,7 +0,0 @@
|
||||
LIB := $(shell $(RUSTC) --print file-names --crate-type=lib $(TMPDIR)/lib.rs)
|
||||
|
||||
$(TMPDIR)/$(LIB):
|
||||
$(RUSTC) --emit link,dep-info --crate-type=lib $(TMPDIR)/lib.rs
|
||||
touch $(TMPDIR)/done
|
||||
|
||||
-include $(TMPDIR)/lib.d
|
@ -1 +0,0 @@
|
||||
pub fn bar() {}
|
@ -1,25 +0,0 @@
|
||||
include ../tools.mk
|
||||
|
||||
# ignore-windows
|
||||
# ignore-freebsd
|
||||
# FIXME: on windows `rustc --dep-info` produces Makefile dependency with
|
||||
# windows native paths (e.g. `c:\path\to\libfoo.a`)
|
||||
# but msys make seems to fail to recognize such paths, so test fails.
|
||||
|
||||
all:
|
||||
cp *.rs $(TMPDIR)
|
||||
$(RUSTC) --emit dep-info,link --crate-type=lib $(TMPDIR)/lib.rs
|
||||
sleep 2
|
||||
touch $(TMPDIR)/foo.rs
|
||||
-rm -f $(TMPDIR)/done
|
||||
$(MAKE) -drf Makefile.foo
|
||||
sleep 2
|
||||
rm $(TMPDIR)/done
|
||||
pwd
|
||||
$(MAKE) -drf Makefile.foo
|
||||
rm $(TMPDIR)/done && exit 1 || exit 0
|
||||
|
||||
# When a source file is deleted `make` should still work
|
||||
rm $(TMPDIR)/bar.rs
|
||||
cp $(TMPDIR)/lib2.rs $(TMPDIR)/lib.rs
|
||||
$(MAKE) -drf Makefile.foo
|
@ -1,7 +0,0 @@
|
||||
LIB := $(shell $(RUSTC) --print file-names --crate-type=lib lib.rs)
|
||||
|
||||
$(TMPDIR)/$(LIB):
|
||||
$(RUSTC) --emit dep-info,link --crate-type=lib lib.rs
|
||||
touch $(TMPDIR)/done
|
||||
|
||||
-include $(TMPDIR)/foo.d
|
37
tests/run-make/dep-info/rmake.rs
Normal file
37
tests/run-make/dep-info/rmake.rs
Normal file
@ -0,0 +1,37 @@
|
||||
// This is a simple smoke test for rustc's `--emit dep-info` feature. It prints out
|
||||
// information about dependencies in a Makefile-compatible format, as a `.d` file.
|
||||
// Note that this test does not check that the `.d` file is Makefile-compatible.
|
||||
|
||||
// This test first checks that emitting dep-info disables static analysis, preventing
|
||||
// compilation of `erroneous.rs` from causing a compilation failure.
|
||||
// Then, it checks that compilation using the flag is successful in general, even with
|
||||
// empty source files or source files that contain a whitespace character.
|
||||
|
||||
// Finally, it removes one dependency and checks that compilation is still successful.
|
||||
// See https://github.com/rust-lang/rust/pull/10698
|
||||
|
||||
use run_make_support::{rfs, rustc};
|
||||
|
||||
fn main() {
|
||||
// We're only emitting dep info, so we shouldn't be running static analysis to
|
||||
// figure out that this program is erroneous.
|
||||
rustc().input("erroneous.rs").emit("dep-info").run();
|
||||
|
||||
rustc().input("lib.rs").emit("dep-info,link").crate_type("lib").run();
|
||||
rfs::remove_file("foo.rs");
|
||||
rfs::create_file("foo.rs");
|
||||
// Compilation should succeed even if `foo.rs` is empty.
|
||||
rustc().input("lib.rs").emit("dep-info,link").crate_type("lib").run();
|
||||
|
||||
// Again, with a space in the filename this time around.
|
||||
rustc().input("lib_foofoo.rs").emit("dep-info,link").crate_type("lib").run();
|
||||
rfs::remove_file("foo foo.rs");
|
||||
rfs::create_file("foo foo.rs");
|
||||
// Compilation should succeed even if `foo foo.rs` is empty.
|
||||
rustc().input("lib_foofoo.rs").emit("dep-info,link").crate_type("lib").run();
|
||||
|
||||
// When a source file is deleted, compilation should still succeed if the library
|
||||
// also loses this source file dependency.
|
||||
rfs::remove_file("bar.rs");
|
||||
rustc().input("lib2.rs").emit("dep-info,link").crate_type("lib").run();
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user