tests/run-make: update for symlink helper changes

This commit is contained in:
许杰友 Jieyou Xu (Joe) 2024-09-16 14:48:47 +08:00
parent 1b86340218
commit 7d764283b4
4 changed files with 28 additions and 30 deletions

View File

@ -1,13 +1,14 @@
// In this test, the symlink created is invalid (valid relative to the root, but not // In this test, the symlink created is invalid (valid relative to the root, but not relatively to
// relatively to where it is located), and used to cause an internal // where it is located), and used to cause an internal compiler error (ICE) when passed as a library
// compiler error (ICE) when passed as a library search path. This was fixed in #26044, // search path. This was fixed in #26044, and this test checks that the invalid symlink is instead
// and this test checks that the invalid symlink is instead simply ignored. // simply ignored.
//
// See https://github.com/rust-lang/rust/issues/26006 // See https://github.com/rust-lang/rust/issues/26006
//@ needs-symlink //@ needs-symlink
//Reason: symlink requires elevated permission in Windows //Reason: symlink requires elevated permission in Windows
use run_make_support::{rfs, rustc}; use run_make_support::{path, rfs, rustc};
fn main() { fn main() {
// We create two libs: `bar` which depends on `foo`. We need to compile `foo` first. // We create two libs: `bar` which depends on `foo`. We need to compile `foo` first.
@ -20,9 +21,9 @@ fn main() {
.metadata("foo") .metadata("foo")
.output("out/foo/libfoo.rlib") .output("out/foo/libfoo.rlib")
.run(); .run();
rfs::create_dir("out/bar"); rfs::create_dir_all("out/bar/deps");
rfs::create_dir("out/bar/deps"); rfs::symlink_file(path("out/foo/libfoo.rlib"), path("out/bar/deps/libfoo.rlib"));
rfs::create_symlink("out/foo/libfoo.rlib", "out/bar/deps/libfoo.rlib");
// Check that the invalid symlink does not cause an ICE // Check that the invalid symlink does not cause an ICE
rustc() rustc()
.input("in/bar/lib.rs") .input("in/bar/lib.rs")

View File

@ -1,22 +1,22 @@
// Crates that are resolved normally have their path canonicalized and all // Crates that are resolved normally have their path canonicalized and all symlinks resolved. This
// symlinks resolved. This did not happen for paths specified // did not happen for paths specified using the `--extern` option to rustc, which could lead to
// using the --extern option to rustc, which could lead to rustc thinking // rustc thinking that it encountered two different versions of a crate, when it's actually the same
// that it encountered two different versions of a crate, when it's // version found through different paths.
// 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.
//
// This test checks that --extern and symlinks together // See <https://github.com/rust-lang/rust/pull/16505>.
// can result in successful compilation.
//@ ignore-cross-compile //@ ignore-cross-compile
//@ needs-symlink //@ needs-symlink
use run_make_support::{cwd, rfs, rustc}; use run_make_support::{cwd, path, rfs, rustc};
fn main() { fn main() {
rustc().input("foo.rs").run(); rustc().input("foo.rs").run();
rfs::create_dir_all("other"); 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("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();
} }

View File

@ -1,18 +1,15 @@
// When a directory and a symlink simultaneously exist with the same name, // Avoid erroring on symlinks pointing to the same file that are present in the library search path.
// 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 // See <https://github.com/rust-lang/rust/issues/12459>.
// 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
//@ ignore-cross-compile //@ ignore-cross-compile
//@ needs-symlink //@ needs-symlink
use run_make_support::{dynamic_lib_name, rfs, rustc}; use run_make_support::{cwd, dynamic_lib_name, path, rfs, rustc};
fn main() { fn main() {
rustc().input("foo.rs").arg("-Cprefer-dynamic").run(); rustc().input("foo.rs").arg("-Cprefer-dynamic").run();
rfs::create_dir_all("other"); rfs::create_dir_all("other");
rfs::create_symlink(dynamic_lib_name("foo"), "other"); rfs::symlink_file(dynamic_lib_name("foo"), path("other").join(dynamic_lib_name("foo")));
rustc().input("bar.rs").library_search_path("other").run(); rustc().input("bar.rs").library_search_path(cwd()).library_search_path("other").run();
} }

View File

@ -12,6 +12,6 @@
fn main() { fn main() {
rustc().input("foo.rs").crate_type("rlib").output("foo.xxx").run(); 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(); rustc().input("bar.rs").library_search_path(cwd()).run();
} }