From 83ffeb62071e28db5e4f57de21bbd8faa65ea1d9 Mon Sep 17 00:00:00 2001 From: Henry Gressmann Date: Thu, 16 Jan 2025 14:32:09 +0100 Subject: chore: expose rkyv errors Signed-off-by: Henry Gressmann --- crates/types/src/archive.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'crates') diff --git a/crates/types/src/archive.rs b/crates/types/src/archive.rs index cc60314..30b54c7 100644 --- a/crates/types/src/archive.rs +++ b/crates/types/src/archive.rs @@ -30,12 +30,12 @@ fn validate_magic(wasm: &[u8]) -> Result { Ok(TWASM_MAGIC.len()) } -#[derive(Debug, PartialEq)] +#[derive(Debug)] pub enum TwasmError { InvalidMagic, InvalidVersion, InvalidPadding, - InvalidArchive, + InvalidArchive(rkyv::rancor::Error), } impl Display for TwasmError { @@ -44,7 +44,7 @@ impl Display for TwasmError { TwasmError::InvalidMagic => write!(f, "Invalid twasm: invalid magic number"), TwasmError::InvalidVersion => write!(f, "Invalid twasm: invalid version"), TwasmError::InvalidPadding => write!(f, "Invalid twasm: invalid padding"), - TwasmError::InvalidArchive => write!(f, "Invalid twasm: invalid archive"), + TwasmError::InvalidArchive(e) => write!(f, "Invalid twasm: {}", e), } } } @@ -58,9 +58,8 @@ impl TinyWasmModule { /// Creates a `TinyWasmModule` from a slice of bytes. pub fn from_twasm(wasm: &[u8]) -> Result { let len = validate_magic(wasm)?; - let root = - access::, rkyv::rancor::Error>(&wasm[len..]).map_err(|_| TwasmError::InvalidArchive)?; - deserialize::(root).map_err(|_e| TwasmError::InvalidArchive) + let root = access::, rkyv::rancor::Error>(&wasm[len..]).map_err(TwasmError::InvalidArchive)?; + deserialize::(root).map_err(TwasmError::InvalidArchive) } /// Serializes the `TinyWasmModule` into a vector of bytes. @@ -93,7 +92,7 @@ mod tests { let wasm = TinyWasmModule::default(); let mut twasm = wasm.serialize_twasm(); twasm[0] = 0; - assert_eq!(TinyWasmModule::from_twasm(&twasm), Err(TwasmError::InvalidMagic)); + assert!(matches!(TinyWasmModule::from_twasm(&twasm), Err(TwasmError::InvalidMagic))); } #[test] @@ -101,6 +100,6 @@ mod tests { let wasm = TinyWasmModule::default(); let mut twasm = wasm.serialize_twasm(); twasm[4] = 0; - assert_eq!(TinyWasmModule::from_twasm(&twasm), Err(TwasmError::InvalidVersion)); + assert!(matches!(TinyWasmModule::from_twasm(&twasm), Err(TwasmError::InvalidVersion))); } } -- cgit v1.3.1