Skip to content

Commit

Permalink
Auto merge of rust-lang#128787 - Oneirical:infohazardous-deprogram, r…
Browse files Browse the repository at this point in the history
…=<try>

Coalesce `dep-info`, `dep-info-spaces` and `dep-info-doesnt-run-much` `run-make` tests into `dep-info` rmake.rs

Part of rust-lang#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](rust-lang@0d9fd8e) that added the `sleep`).

I tried to preserve the intent of the test, which is smoke-testing that `dep-info` works.

Try:

try-job: x86_64-msvc
try-job: i686-mingw
try-job: dist-x86_64-freebsd
  • Loading branch information
bors committed Aug 11, 2024
2 parents 730d5d4 + b54ae7e commit a0e1ac5
Show file tree
Hide file tree
Showing 11 changed files with 41 additions and 66 deletions.
3 changes: 0 additions & 3 deletions src/tools/tidy/src/allowed_run_make_makefiles.txt
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 0 additions & 4 deletions tests/run-make/dep-info-doesnt-run-much/Makefile

This file was deleted.

19 changes: 0 additions & 19 deletions tests/run-make/dep-info-spaces/Makefile

This file was deleted.

7 changes: 0 additions & 7 deletions tests/run-make/dep-info-spaces/Makefile.foo

This file was deleted.

1 change: 0 additions & 1 deletion tests/run-make/dep-info-spaces/bar.rs

This file was deleted.

25 changes: 0 additions & 25 deletions tests/run-make/dep-info/Makefile

This file was deleted.

7 changes: 0 additions & 7 deletions tests/run-make/dep-info/Makefile.foo

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
41 changes: 41 additions & 0 deletions tests/run-make/dep-info/rmake.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
// 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.

// 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

// FIXME try it on windows and freebsd
// 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.

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();
}

0 comments on commit a0e1ac5

Please sign in to comment.