From aef8be560ff16c04440bae51de3eb0a52ddd4d13 Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Fri, 11 Dec 2020 15:00:58 -0800 Subject: [PATCH] test-programs: use wasi-c2 instead of wasmtime --- Cargo.lock | 16 +++++- Cargo.toml | 1 + crates/test-programs/Cargo.toml | 4 +- .../test-programs/tests/wasm_tests/runtime.rs | 51 ++++++++++--------- 4 files changed, 44 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 15df8fcd66..f0026c5a35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2140,9 +2140,9 @@ dependencies = [ "pretty_env_logger", "target-lexicon", "tempfile", - "wasi-common", + "wasi-c2", + "wasi-c2-wasmtime", "wasmtime", - "wasmtime-wasi", "wat", ] @@ -2389,6 +2389,18 @@ dependencies = [ "wiggle", ] +[[package]] +name = "wasi-c2-wasmtime" +version = "0.21.0" +dependencies = [ + "anyhow", + "cap-std", + "wasi-c2", + "wasmtime", + "wasmtime-wiggle", + "wiggle", +] + [[package]] name = "wasi-common" version = "0.21.0" diff --git a/Cargo.toml b/Cargo.toml index 54871d188b..7cfb384c98 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,6 +71,7 @@ members = [ "crates/wiggle", "crates/wiggle/wasmtime", "crates/wasi-c2", + "crates/wasi-c2/wasmtime", "examples/fib-debug/wasm", "examples/wasi/wasm", "examples/wasi-fs/wasm", diff --git a/crates/test-programs/Cargo.toml b/crates/test-programs/Cargo.toml index 0ba9925014..dce5b74e65 100644 --- a/crates/test-programs/Cargo.toml +++ b/crates/test-programs/Cargo.toml @@ -10,8 +10,8 @@ publish = false cfg-if = "1.0" [dev-dependencies] -wasi-common = { path = "../wasi-common", version = "0.21.0" } -wasmtime-wasi = { path = "../wasi", version = "0.21.0" } +wasi-c2 = { path = "../wasi-c2", version = "0.21.0" } +wasi-c2-wasmtime = { path = "../wasi-c2/wasmtime", version = "0.21.0" } wasmtime = { path = "../wasmtime", version = "0.21.0" } target-lexicon = "0.11.0" pretty_env_logger = "0.4.0" diff --git a/crates/test-programs/tests/wasm_tests/runtime.rs b/crates/test-programs/tests/wasm_tests/runtime.rs index f10e94456c..7b0cb05df9 100644 --- a/crates/test-programs/tests/wasm_tests/runtime.rs +++ b/crates/test-programs/tests/wasm_tests/runtime.rs @@ -2,7 +2,7 @@ use anyhow::Context; use std::convert::TryFrom; use std::fs::File; use std::path::Path; -use wasi_common::{OsOther, VirtualDirEntry}; +use wasi_c2::WasiCtx; use wasmtime::{Linker, Module, Store}; #[derive(Clone, Copy, Debug)] @@ -23,34 +23,37 @@ pub fn instantiate( // Create our wasi context with pretty standard arguments/inheritance/etc. // Additionally register any preopened directories if we have them. - let mut builder = wasi_common::WasiCtxBuilder::new(); + let mut builder = wasi_c2::WasiCtx::builder(); builder.arg(bin_name).arg(".").inherit_stdio(); - if let Some(workspace) = workspace { - match preopen_type { - PreopenType::OS => { - let preopen_dir = wasi_common::preopen_dir(workspace) - .context(format!("error while preopening {:?}", workspace))?; - builder.preopened_dir(preopen_dir, "."); - } - PreopenType::Virtual => { - // we can ignore the workspace path for virtual preopens because virtual preopens - // don't exist in the filesystem anyway - no name conflict concerns. - builder.preopened_virt(VirtualDirEntry::empty_directory(), "."); + /* + if let Some(workspace) = workspace { + match preopen_type { + PreopenType::OS => { + let preopen_dir = wasi_common::preopen_dir(workspace) + .context(format!("error while preopening {:?}", workspace))?; + builder.preopened_dir(preopen_dir, "."); + } + PreopenType::Virtual => { + // we can ignore the workspace path for virtual preopens because virtual preopens + // don't exist in the filesystem anyway - no name conflict concerns. + builder.preopened_virt(VirtualDirEntry::empty_directory(), "."); + } } } - } - - // The nonstandard thing we do with `WasiCtxBuilder` is to ensure that - // `stdin` is always an unreadable pipe. This is expected in the test suite - // where `stdin` is never ready to be read. In some CI systems, however, - // stdin is closed which causes tests to fail. - let (reader, _writer) = os_pipe::pipe()?; - let file = reader_to_file(reader); - let handle = OsOther::try_from(file).context("failed to create OsOther from PipeReader")?; - builder.stdin(handle); - let snapshot1 = wasmtime_wasi::Wasi::new(&store, builder.build()?); + */ + /* + // The nonstandard thing we do with `WasiCtxBuilder` is to ensure that + // `stdin` is always an unreadable pipe. This is expected in the test suite + // where `stdin` is never ready to be read. In some CI systems, however, + // stdin is closed which causes tests to fail. + let (reader, _writer) = os_pipe::pipe()?; + let file = reader_to_file(reader); + let handle = OsOther::try_from(file).context("failed to create OsOther from PipeReader")?; + builder.stdin(handle); + */ + let snapshot1 = wasi_c2_wasmtime::Wasi::new(&store, builder.build()?); let mut linker = Linker::new(&store);