diff --git a/wasi/snapshot1/path_rename.wasm b/wasi/snapshot1/path_rename.wasm index 9d5c537..2b99f36 100755 Binary files a/wasi/snapshot1/path_rename.wasm and b/wasi/snapshot1/path_rename.wasm differ diff --git a/wasi/snapshot1/path_rename.wast b/wasi/snapshot1/path_rename.wast index 37462ee..10e6178 100644 --- a/wasi/snapshot1/path_rename.wast +++ b/wasi/snapshot1/path_rename.wast @@ -3,5 +3,5 @@ (wasi_test "path_rename.wasm" (temp_dirs "temp") (assert_return (i64.const 0)) - (assert_stdout "The original file does not still exist!\nFound item: path_renamed_file.txt\n柴犬\n") + (assert_stdout "The original file does not still exist!\nFound item: path_renamed_file.txt\n柴犬\nrun_with_sub_dir: The original file does not still exist!\nrun_with_different_sub_dirs: The original file does not still exist!\n") ) diff --git a/wasi/tests/path_rename.rs b/wasi/tests/path_rename.rs index 266990c..28ea0de 100644 --- a/wasi/tests/path_rename.rs +++ b/wasi/tests/path_rename.rs @@ -5,7 +5,7 @@ use std::fs; use std::io::{Read, Write}; use std::path::PathBuf; -fn main() { +fn run_with_toplevel_dir() { #[cfg(not(target_os = "wasi"))] let mut base = PathBuf::from("test_fs"); #[cfg(target_os = "wasi")] @@ -73,3 +73,95 @@ fn main() { println!("{}", test_str); std::fs::remove_file(file_to_rename_to).unwrap(); } + +fn run_with_sub_dir() { + #[cfg(not(target_os = "wasi"))] + let base = PathBuf::from("test_fs"); + #[cfg(target_os = "wasi")] + let mut base = PathBuf::from("temp"); + + //make a sub-directory + fs::create_dir(base.join("sub")); + + let file_to_create = base.join("sub/path_rename_file.txt"); + let file_to_rename_to = base.join("sub/path_renamed_file.txt"); + + { + let mut f = std::fs::OpenOptions::new() + .create_new(true) + .write(true) + .open(&file_to_create) + .unwrap(); + + let string = "Hello world"; + let bytes: Vec = string.bytes().collect(); + f.write_all(&bytes[..]).unwrap(); + } + + std::fs::rename(&file_to_create, &file_to_rename_to).unwrap(); + let mut file = fs::File::open(&file_to_rename_to).expect("Could not open file"); + if file_to_create.exists() { + println!("run_with_sub_dir: The original file still exists!"); + return; + } else { + println!("run_with_sub_dir: The original file does not still exist!"); + } + + if !file_to_rename_to.exists() { + println!("run_with_sub_dir: The moved file does not exist!"); + return; + } + fs::remove_dir_all(base.join("sub")); +} + +fn run_with_different_sub_dirs() { + #[cfg(not(target_os = "wasi"))] + let base = PathBuf::from("test_fs"); + #[cfg(target_os = "wasi")] + let mut base = PathBuf::from("temp"); + + //make sub-directories + fs::create_dir(base.join("a")); + fs::create_dir(base.join("a/b")); + fs::create_dir(base.join("c")); + fs::create_dir(base.join("c/d")); + fs::create_dir(base.join("c/d/e")); + + let file_to_create = base.join("a/b/path_rename_file.txt"); + let file_to_rename_to = base.join("c/d/e/path_renamed_file.txt"); + + { + let mut f = std::fs::OpenOptions::new() + .create_new(true) + .write(true) + .open(&file_to_create) + .unwrap(); + + let string = "Hello world"; + let bytes: Vec = string.bytes().collect(); + f.write_all(&bytes[..]).unwrap(); + } + + std::fs::rename(&file_to_create, &file_to_rename_to).unwrap(); + let mut file = fs::File::open(&file_to_rename_to).expect("Could not open file"); + if file_to_create.exists() { + println!("run_with_different_sub_dirs: The original file still exists!"); + return; + } else { + println!("run_with_different_sub_dirs: The original file does not still exist!"); + } + + if !file_to_rename_to.exists() { + println!("run_with_different_sub_dirs: The moved file does not exist!"); + return; + } + + fs::remove_dir_all(base.join("a")); + fs::remove_dir_all(base.join("c")); +} + +fn main() { + run_with_toplevel_dir(); + run_with_sub_dir(); + run_with_different_sub_dirs(); +} diff --git a/wasi/unstable/path_rename.wasm b/wasi/unstable/path_rename.wasm index 4642d31..5945204 100755 Binary files a/wasi/unstable/path_rename.wasm and b/wasi/unstable/path_rename.wasm differ diff --git a/wasi/unstable/path_rename.wast b/wasi/unstable/path_rename.wast index 37462ee..10e6178 100644 --- a/wasi/unstable/path_rename.wast +++ b/wasi/unstable/path_rename.wast @@ -3,5 +3,5 @@ (wasi_test "path_rename.wasm" (temp_dirs "temp") (assert_return (i64.const 0)) - (assert_stdout "The original file does not still exist!\nFound item: path_renamed_file.txt\n柴犬\n") + (assert_stdout "The original file does not still exist!\nFound item: path_renamed_file.txt\n柴犬\nrun_with_sub_dir: The original file does not still exist!\nrun_with_different_sub_dirs: The original file does not still exist!\n") )