tests/run-make: update for symlink helper changes
This commit is contained in:
parent
1b86340218
commit
7d764283b4
@ -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")
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user