From 4a882d529df21aefab4a0f828e89314831a3e002 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Tue, 16 Apr 2024 22:06:59 -0400 Subject: [PATCH] Add invalid data test for ShaderPackage --- src/shpk.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/shpk.rs b/src/shpk.rs index d57005d..eef98fb 100644 --- a/src/shpk.rs +++ b/src/shpk.rs @@ -190,7 +190,7 @@ impl ShaderPackage { /// Reads an existing SHPK file pub fn from_existing(buffer: ByteSpan) -> Option { let mut cursor = Cursor::new(buffer); - let mut package = ShaderPackage::read(&mut cursor).unwrap(); + let mut package = ShaderPackage::read(&mut cursor).ok()?; for (i, node) in package.nodes.iter().enumerate() { package.node_selectors.push((node.selector, i as u32)); @@ -235,3 +235,21 @@ impl ShaderPackage { selector } } + +#[cfg(test)] +mod tests { + use std::fs::read; + use std::path::PathBuf; + + use super::*; + + #[test] + fn test_invalid() { + let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + d.push("resources/tests"); + d.push("random"); + + // Feeding it invalid data should not panic + ShaderPackage::from_existing(&read(d).unwrap()); + } +}