From c8ca639b934fb2a612755a110c1526b29dd8deb1 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Wed, 3 Feb 2021 16:16:09 -0800 Subject: [PATCH] new cap-std apis fix some windows tests! fix for fd_readdir test on linux, and symlink_create / nofollow_errors --- crates/test-programs/build.rs | 4 ---- crates/wasi-common/cap-std-sync/src/dir.rs | 6 +++--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/crates/test-programs/build.rs b/crates/test-programs/build.rs index 6de5c1172b..ff0d30ae2c 100644 --- a/crates/test-programs/build.rs +++ b/crates/test-programs/build.rs @@ -194,13 +194,9 @@ mod wasi_tests { [ // Panic: Metadata not associated with open file // https://github.com/bytecodealliance/cap-std/issues/142 - "fd_readdir", "fd_flags_set", "path_filestat", "symlink_filestat", - // upstream fixes pending: - "symlink_create", // cap-std #149 - "nofollow_errors", // cap-std #149 and #150 // Trailing slash related bugs "interesting_paths", "path_rename_file_trailing_slashes", diff --git a/crates/wasi-common/cap-std-sync/src/dir.rs b/crates/wasi-common/cap-std-sync/src/dir.rs index e4eefdf979..ca58c4d45d 100644 --- a/crates/wasi-common/cap-std-sync/src/dir.rs +++ b/crates/wasi-common/cap-std-sync/src/dir.rs @@ -1,5 +1,5 @@ use crate::file::{filetype_from, File}; -use cap_fs_ext::{DirExt, MetadataExt, SystemTimeSpec}; +use cap_fs_ext::{DirEntryExt, DirExt, MetadataExt, SystemTimeSpec}; use std::any::Any; use std::convert::TryInto; use std::path::{Path, PathBuf}; @@ -123,7 +123,7 @@ impl WasiDir for Dir { // Now process the `DirEntry`s: self.0.entries()?.map(|entry| { let entry = entry?; - let meta = entry.metadata()?; + let meta = entry.full_metadata()?; let inode = meta.ino(); let filetype = filetype_from(&meta.file_type()); let name = entry @@ -163,7 +163,7 @@ impl WasiDir for Dir { } fn unlink_file(&self, path: &str) -> Result<(), Error> { - self.0.remove_file(Path::new(path))?; + self.0.remove_file_or_symlink(Path::new(path))?; Ok(()) } fn read_link(&self, path: &str) -> Result {