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