extension_host: Replace backslashes with forward slashes for cwd on Windows (#38072)
Instead of passing CWD verbatim from the Windows host with backslashes and all, we now rewrite it into a more POSIX-happy format featuring forward slashes which means `std::path::Path` operations now work within WASI with Windows-style paths. Release Notes: - N/A
This commit is contained in:
@@ -666,15 +666,17 @@ impl WasmHost {
|
||||
|
||||
let file_perms = wasi::FilePerms::all();
|
||||
let dir_perms = wasi::DirPerms::all();
|
||||
let path = SanitizedPath::new(&extension_work_dir);
|
||||
let path = SanitizedPath::new(&extension_work_dir).to_string();
|
||||
#[cfg(target_os = "windows")]
|
||||
let path = path.replace('\\', "/");
|
||||
|
||||
let mut ctx = wasi::WasiCtxBuilder::new();
|
||||
ctx.inherit_stdio()
|
||||
.env("PWD", path.to_string())
|
||||
.env("PWD", &path)
|
||||
.env("RUST_BACKTRACE", "full");
|
||||
|
||||
ctx.preopened_dir(&path, ".", dir_perms, file_perms)?;
|
||||
ctx.preopened_dir(&path, path.to_string(), dir_perms, file_perms)?;
|
||||
ctx.preopened_dir(&path, &path, dir_perms, file_perms)?;
|
||||
|
||||
Ok(ctx.build())
|
||||
}
|
||||
|
||||
@@ -18,6 +18,10 @@ impl TestExtension {
|
||||
|
||||
let current_dir = std::env::current_dir().unwrap();
|
||||
println!("current_dir: {}", current_dir.display());
|
||||
assert_eq!(
|
||||
current_dir.file_name().unwrap().to_str().unwrap(),
|
||||
"test-extension"
|
||||
);
|
||||
|
||||
fs::create_dir_all(current_dir.join("dir-created-with-abs-path")).unwrap();
|
||||
fs::create_dir_all("./dir-created-with-rel-path").unwrap();
|
||||
|
||||
Reference in New Issue
Block a user