diff --git a/crates/test-programs/wasi-tests/src/bin/path_symlink_trailing_slashes.rs b/crates/test-programs/wasi-tests/src/bin/path_symlink_trailing_slashes.rs index 748b8bd95d..5a63a13fb8 100644 --- a/crates/test-programs/wasi-tests/src/bin/path_symlink_trailing_slashes.rs +++ b/crates/test-programs/wasi-tests/src/bin/path_symlink_trailing_slashes.rs @@ -22,7 +22,8 @@ unsafe fn test_path_symlink_trailing_slashes(dir_fd: wasi::Fd) { wasi::path_symlink("source", dir_fd, "target/") .expect_err("link destination already exists") .raw_error(), - wasi::ERRNO_EXIST, + windows => wasi::ERRNO_NOENT, + wasi::ERRNO_EXIST ); wasi::path_remove_directory(dir_fd, "target").expect("removing a directory"); diff --git a/crates/test-programs/wasi-tests/src/lib.rs b/crates/test-programs/wasi-tests/src/lib.rs index 059d3c1ae2..7ecc77b33d 100644 --- a/crates/test-programs/wasi-tests/src/lib.rs +++ b/crates/test-programs/wasi-tests/src/lib.rs @@ -67,6 +67,22 @@ macro_rules! assert_errno { ($s:expr, $( $i:expr ),+,) => { assert_errno!($s, $( $i ),+) }; + ($s:expr, windows => $i:expr, $( $rest:expr ),+) => { + let e = $s; + if std::env::var("ERRNO_EXPECT_WINDOWS").is_ok() { + assert_errno!(e, $i); + } else { + assert_errno!(e, $($rest),+, $i); + } + }; + ($s:expr, linux => $i:expr, $( $rest:expr ),+) => { + let e = $s; + if std::env::var("ERRNO_EXPECT_LINUX").is_ok() { + assert_errno!(e, $i); + } else { + assert_errno!(e, $($rest),+, $i); + } + }; ($s:expr, $( $i:expr ),+) => { let e = $s; {