move ctx into wiggle-tests crate
This commit is contained in:
@@ -90,3 +90,38 @@ mod test {
|
|||||||
assert_eq!(h.buffer.as_mut_ptr() as usize % 4096, 0);
|
assert_eq!(h.buffer.as_mut_ptr() as usize % 4096, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
use wiggle_runtime::GuestError;
|
||||||
|
|
||||||
|
pub struct WasiCtx {
|
||||||
|
pub guest_errors: Vec<GuestError>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl WasiCtx {
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
guest_errors: vec![],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Errno is used as a first return value in the functions above, therefore
|
||||||
|
// it must implement GuestErrorType with type Context = WasiCtx.
|
||||||
|
// The context type should let you do logging or debugging or whatever you need
|
||||||
|
// with these errors. We just push them to vecs.
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! impl_errno {
|
||||||
|
( $errno:ty ) => {
|
||||||
|
impl wiggle_runtime::GuestErrorType for $errno {
|
||||||
|
type Context = WasiCtx;
|
||||||
|
fn success() -> $errno {
|
||||||
|
<$errno>::Ok
|
||||||
|
}
|
||||||
|
fn from_error(e: GuestError, ctx: &mut WasiCtx) -> $errno {
|
||||||
|
eprintln!("GUEST ERROR: {:?}", e);
|
||||||
|
ctx.guest_errors.push(e);
|
||||||
|
types::Errno::InvalidArg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|||||||
34
tests/ctx.rs
34
tests/ctx.rs
@@ -1,34 +0,0 @@
|
|||||||
use wiggle_runtime::GuestError;
|
|
||||||
|
|
||||||
pub struct WasiCtx {
|
|
||||||
pub guest_errors: Vec<GuestError>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl WasiCtx {
|
|
||||||
pub fn new() -> Self {
|
|
||||||
Self {
|
|
||||||
guest_errors: vec![],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Errno is used as a first return value in the functions above, therefore
|
|
||||||
// it must implement GuestErrorType with type Context = WasiCtx.
|
|
||||||
// The context type should let you do logging or debugging or whatever you need
|
|
||||||
// with these errors. We just push them to vecs.
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! impl_errno {
|
|
||||||
( $errno:ty ) => {
|
|
||||||
impl wiggle_runtime::GuestErrorType for $errno {
|
|
||||||
type Context = WasiCtx;
|
|
||||||
fn success() -> $errno {
|
|
||||||
<$errno>::Ok
|
|
||||||
}
|
|
||||||
fn from_error(e: GuestError, ctx: &mut WasiCtx) -> $errno {
|
|
||||||
eprintln!("GUEST ERROR: {:?}", e);
|
|
||||||
ctx.guest_errors.push(e);
|
|
||||||
types::Errno::InvalidArg
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -3,16 +3,13 @@ use std::convert::TryFrom;
|
|||||||
use wiggle_runtime::{
|
use wiggle_runtime::{
|
||||||
GuestArray, GuestError, GuestPtr, GuestPtrMut, GuestRef, GuestRefMut, GuestString,
|
GuestArray, GuestError, GuestPtr, GuestPtrMut, GuestRef, GuestRefMut, GuestString,
|
||||||
};
|
};
|
||||||
use wiggle_test::{HostMemory, MemArea};
|
use wiggle_test::{impl_errno, HostMemory, MemArea, WasiCtx};
|
||||||
|
|
||||||
wiggle_generate::from_witx!({
|
wiggle_generate::from_witx!({
|
||||||
witx: ["tests/test.witx"],
|
witx: ["tests/test.witx"],
|
||||||
ctx: WasiCtx,
|
ctx: WasiCtx,
|
||||||
});
|
});
|
||||||
|
|
||||||
mod ctx;
|
|
||||||
use ctx::WasiCtx;
|
|
||||||
|
|
||||||
impl_errno!(types::Errno);
|
impl_errno!(types::Errno);
|
||||||
|
|
||||||
impl foo::Foo for WasiCtx {
|
impl foo::Foo for WasiCtx {
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
use proptest::prelude::*;
|
use proptest::prelude::*;
|
||||||
use wiggle_runtime::GuestError;
|
use wiggle_runtime::GuestError;
|
||||||
use wiggle_test::HostMemory;
|
use wiggle_test::{impl_errno, HostMemory, WasiCtx};
|
||||||
|
|
||||||
mod ctx;
|
|
||||||
use ctx::WasiCtx;
|
|
||||||
|
|
||||||
wiggle_generate::from_witx!({
|
wiggle_generate::from_witx!({
|
||||||
witx: ["tests/trivial.witx"],
|
witx: ["tests/trivial.witx"],
|
||||||
|
|||||||
Reference in New Issue
Block a user