missed a dangling symlink
This commit is contained in:
@@ -35,7 +35,6 @@
|
||||
- same incorrect behavior as linux
|
||||
|
||||
|
||||
* dangling_fd
|
||||
* dangling_symlink
|
||||
* path_rename_trailing_slashes
|
||||
* remove_directory_trailing_slashes
|
||||
|
||||
@@ -1,29 +1,31 @@
|
||||
use std::{env, process};
|
||||
use wasi_tests::{assert_errno, open_scratch_directory};
|
||||
use wasi_tests::{assert_errno, open_scratch_directory, TESTCONFIG};
|
||||
|
||||
unsafe fn test_dangling_symlink(dir_fd: wasi::Fd) {
|
||||
// First create a dangling symlink.
|
||||
wasi::path_symlink("target", dir_fd, "symlink").expect("creating a symlink");
|
||||
if TESTCONFIG.support_dangling_symlinks() {
|
||||
// First create a dangling symlink.
|
||||
wasi::path_symlink("target", dir_fd, "symlink").expect("creating a symlink");
|
||||
|
||||
// Try to open it as a directory with O_NOFOLLOW.
|
||||
assert_errno!(
|
||||
wasi::path_open(dir_fd, 0, "symlink", wasi::OFLAGS_DIRECTORY, 0, 0, 0)
|
||||
.expect_err("opening a dangling symlink as a directory")
|
||||
.raw_error(),
|
||||
wasi::ERRNO_NOTDIR,
|
||||
wasi::ERRNO_LOOP
|
||||
);
|
||||
// Try to open it as a directory with O_NOFOLLOW.
|
||||
assert_errno!(
|
||||
wasi::path_open(dir_fd, 0, "symlink", wasi::OFLAGS_DIRECTORY, 0, 0, 0)
|
||||
.expect_err("opening a dangling symlink as a directory")
|
||||
.raw_error(),
|
||||
wasi::ERRNO_NOTDIR,
|
||||
wasi::ERRNO_LOOP
|
||||
);
|
||||
|
||||
// Try to open it as a file with O_NOFOLLOW.
|
||||
assert_errno!(
|
||||
wasi::path_open(dir_fd, 0, "symlink", 0, 0, 0, 0)
|
||||
.expect_err("opening a dangling symlink as a file")
|
||||
.raw_error(),
|
||||
wasi::ERRNO_LOOP
|
||||
);
|
||||
// Try to open it as a file with O_NOFOLLOW.
|
||||
assert_errno!(
|
||||
wasi::path_open(dir_fd, 0, "symlink", 0, 0, 0, 0)
|
||||
.expect_err("opening a dangling symlink as a file")
|
||||
.raw_error(),
|
||||
wasi::ERRNO_LOOP
|
||||
);
|
||||
|
||||
// Clean up.
|
||||
wasi::path_unlink_file(dir_fd, "symlink").expect("failed to remove file");
|
||||
// Clean up.
|
||||
wasi::path_unlink_file(dir_fd, "symlink").expect("failed to remove file");
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
||||
Reference in New Issue
Block a user