forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests: migrate
libs-through-symlink
to rmake.rs
- Document test intent, backlink to rust-lang#13890 and fix PR rust-lang#13903. - Fix the test logic: the `Makefile` version seems to not actually be exercising the "library search traverses symlink" logic, because the actual symlinked-to-library is present under the directory tree when `bar.rs` is compiled, because the `$(RUSTC)` invocation has an implicit `-L $(TMPDIR)`. The symlink itself was actually broken, i.e. it should've been `ln -nsf $(TMPDIR)/outdir/$(NAME) $(TMPDIR)` but it used `ln -nsf outdir/$(NAME) $(TMPDIR)`. Co-authored-by: Oneirical <manchot@videotron.ca>
- Loading branch information
Showing
3 changed files
with
34 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
//! Regression test for [rustc doesn't handle relative symlinks to libraries | ||
//! #13890](https://github.com/rust-lang/rust/issues/13890). | ||
//! | ||
//! The rust compiler searches by default for libraries in its current directory, but used to have | ||
//! difficulty following symlinks leading to required libraries if the real ones were located not | ||
//! under the same directory tree. After this was fixed in #13903, this test checks that compilation | ||
//! succeeds through use of the symlink. | ||
//@ ignore-cross-compile | ||
|
||
use run_make_support::{bare_rustc, cwd, path, rfs, rust_lib_name}; | ||
|
||
fn main() { | ||
let actual_lib_dir = path("actual_lib_dir"); | ||
let symlink_lib_dir = path("symlink_lib_dir"); | ||
rfs::create_dir_all(&actual_lib_dir); | ||
rfs::create_dir_all(&symlink_lib_dir); | ||
|
||
// NOTE: `bare_rustc` is used because it does not introduce an implicit `-L .` library search | ||
// flag. | ||
bare_rustc().input("foo.rs").output(actual_lib_dir.join(rust_lib_name("foo"))).run(); | ||
|
||
rfs::symlink_file( | ||
actual_lib_dir.join(rust_lib_name("foo")), | ||
symlink_lib_dir.join(rust_lib_name("foo")), | ||
); | ||
|
||
// Make rustc's $CWD be in the directory containing the symlink-to-lib. | ||
bare_rustc() | ||
.current_dir(&symlink_lib_dir) | ||
.library_search_path(".") | ||
.input(cwd().join("bar.rs")) | ||
.run(); | ||
} |