From 11b82220334cb1cadeeeaa359fcde6b76cda74d8 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Thu, 28 Jan 2021 12:59:44 -0800 Subject: [PATCH] missed a dangling symlink --- crates/test-programs/TEST_FAILURES | 1 - .../wasi-tests/src/bin/dangling_symlink.rs | 42 ++++++++++--------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/crates/test-programs/TEST_FAILURES b/crates/test-programs/TEST_FAILURES index 920b559199..92210e99af 100644 --- a/crates/test-programs/TEST_FAILURES +++ b/crates/test-programs/TEST_FAILURES @@ -35,7 +35,6 @@ - same incorrect behavior as linux -* dangling_fd * dangling_symlink * path_rename_trailing_slashes * remove_directory_trailing_slashes diff --git a/crates/test-programs/wasi-tests/src/bin/dangling_symlink.rs b/crates/test-programs/wasi-tests/src/bin/dangling_symlink.rs index 7d5e960322..596a9b766f 100644 --- a/crates/test-programs/wasi-tests/src/bin/dangling_symlink.rs +++ b/crates/test-programs/wasi-tests/src/bin/dangling_symlink.rs @@ -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() {