Skip to content

Commit

Permalink
tests/run-make: update for symlink helper changes
Browse files Browse the repository at this point in the history
  • Loading branch information
jieyouxu committed Sep 16, 2024
1 parent 1b86340 commit 7d76428
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 30 deletions.
17 changes: 9 additions & 8 deletions tests/run-make/invalid-symlink-search-path/rmake.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
// In this test, the symlink created is invalid (valid relative to the root, but not
// relatively to where it is located), and used to cause an internal
// compiler error (ICE) when passed as a library search path. This was fixed in #26044,
// and this test checks that the invalid symlink is instead simply ignored.
// In this test, the symlink created is invalid (valid relative to the root, but not relatively to
// where it is located), and used to cause an internal compiler error (ICE) when passed as a library
// search path. This was fixed in #26044, and this test checks that the invalid symlink is instead
// simply ignored.
//
// See https://github.com/rust-lang/rust/issues/26006

//@ needs-symlink
//Reason: symlink requires elevated permission in Windows

use run_make_support::{rfs, rustc};
use run_make_support::{path, rfs, rustc};

fn main() {
// We create two libs: `bar` which depends on `foo`. We need to compile `foo` first.
Expand All @@ -20,9 +21,9 @@ fn main() {
.metadata("foo")
.output("out/foo/libfoo.rlib")
.run();
rfs::create_dir("out/bar");
rfs::create_dir("out/bar/deps");
rfs::create_symlink("out/foo/libfoo.rlib", "out/bar/deps/libfoo.rlib");
rfs::create_dir_all("out/bar/deps");
rfs::symlink_file(path("out/foo/libfoo.rlib"), path("out/bar/deps/libfoo.rlib"));

// Check that the invalid symlink does not cause an ICE
rustc()
.input("in/bar/lib.rs")
Expand Down
24 changes: 12 additions & 12 deletions tests/run-make/symlinked-extern/rmake.rs
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
// Crates that are resolved normally have their path canonicalized and all
// symlinks resolved. This did not happen for paths specified
// using the --extern option to rustc, which could lead to rustc thinking
// that it encountered two different versions of a crate, when it's
// actually the same version found through different paths.
// See https://github.com/rust-lang/rust/pull/16505

// This test checks that --extern and symlinks together
// can result in successful compilation.
// Crates that are resolved normally have their path canonicalized and all symlinks resolved. This
// did not happen for paths specified using the `--extern` option to rustc, which could lead to
// rustc thinking that it encountered two different versions of a crate, when it's actually the same
// version found through different paths.
//
// This test checks that `--extern` and symlinks together can result in successful compilation.
//
// See <https://github.com/rust-lang/rust/pull/16505>.

//@ ignore-cross-compile
//@ needs-symlink

use run_make_support::{cwd, rfs, rustc};
use run_make_support::{cwd, path, rfs, rustc};

fn main() {
rustc().input("foo.rs").run();
rfs::create_dir_all("other");
rfs::create_symlink("libfoo.rlib", "other");
rfs::symlink_file(path("libfoo.rlib"), path("other").join("libfoo.rlib"));

rustc().input("bar.rs").library_search_path(cwd()).run();
rustc().input("baz.rs").extern_("foo", "other").library_search_path(cwd()).run();
rustc().input("baz.rs").extern_("foo", "other/libfoo.rlib").library_search_path(cwd()).run();
}
15 changes: 6 additions & 9 deletions tests/run-make/symlinked-libraries/rmake.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
// When a directory and a symlink simultaneously exist with the same name,
// setting that name as the library search path should not cause rustc
// to avoid looking in the symlink and cause an error. This test creates
// a directory and a symlink named "other", and places the library in the symlink.
// If it succeeds, the library was successfully found.
// See https://github.com/rust-lang/rust/issues/12459
// Avoid erroring on symlinks pointing to the same file that are present in the library search path.
//
// See <https://github.com/rust-lang/rust/issues/12459>.

//@ ignore-cross-compile
//@ needs-symlink

use run_make_support::{dynamic_lib_name, rfs, rustc};
use run_make_support::{cwd, dynamic_lib_name, path, rfs, rustc};

fn main() {
rustc().input("foo.rs").arg("-Cprefer-dynamic").run();
rfs::create_dir_all("other");
rfs::create_symlink(dynamic_lib_name("foo"), "other");
rustc().input("bar.rs").library_search_path("other").run();
rfs::symlink_file(dynamic_lib_name("foo"), path("other").join(dynamic_lib_name("foo")));
rustc().input("bar.rs").library_search_path(cwd()).library_search_path("other").run();
}
2 changes: 1 addition & 1 deletion tests/run-make/symlinked-rlib/rmake.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ use run_make_support::{cwd, rfs, rustc};

fn main() {
rustc().input("foo.rs").crate_type("rlib").output("foo.xxx").run();
rfs::create_symlink("foo.xxx", "libfoo.rlib");
rfs::symlink_file("foo.xxx", "libfoo.rlib");
rustc().input("bar.rs").library_search_path(cwd()).run();
}

0 comments on commit 7d76428

Please sign in to comment.