wasmer/tests/wasi_test_resources/path_rename.rs
2020-04-15 16:31:05 -07:00

57 lines
2.0 KiB
Rust

// WASI:
// mapdir: temp:tests/wasi_test_resources/test_fs/temp
use std::fs;
use std::io::{Read, Write};
use std::path::PathBuf;
fn main() {
#[cfg(not(target_os = "wasi"))]
let mut base = PathBuf::from("tests/wasi_test_resources/test_fs");
#[cfg(target_os = "wasi")]
let mut base = PathBuf::from("/");
let file_to_create = base.join("temp/path_rename_file.txt");
let file_to_rename_to = base.join("temp/path_renamed_file.txt");
{
let mut f = std::fs::OpenOptions::new()
.create_new(true)
.write(true)
.open(&file_to_create)
.unwrap();
// text from https://ja.wikipedia.org/wiki/柴犬
let shiba_string = "「柴犬」という名前は中央高地で使われていたもので、文献上では、昭和初期の日本犬保存会の会誌「日本犬」で用いられている。一般的には、「柴」は小ぶりな雑木を指す。
由来には諸説があり、
柴藪を巧みにくぐり抜けて猟を助けることから
赤褐色の毛色が枯れ柴に似ている(柴赤)ことから
小さなものを表す古語の「柴」から
の3つの説が代表的。";
let shiba_bytes: Vec<u8> = shiba_string.bytes().collect();
f.write_all(&shiba_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!("The original file still exists!");
return;
} else {
println!("The original file does not still exist!");
}
let mut out_str = String::new();
file.read_to_string(&mut out_str).unwrap();
let mut test_str = String::new();
let mut out_chars = out_str.chars();
out_chars.next().unwrap();
test_str.push(out_chars.next().unwrap());
test_str.push(out_chars.next().unwrap());
println!("{}", test_str);
std::fs::remove_file(file_to_rename_to).unwrap();
}