From 4bc6501d2effb826213d6a56eee4e20f5d60b49b Mon Sep 17 00:00:00 2001 From: Alex Orlenko Date: Fri, 17 Mar 2023 01:31:07 +0000 Subject: [PATCH] Tests for the `ErrorContext` trait --- tests/error.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tests/error.rs diff --git a/tests/error.rs b/tests/error.rs new file mode 100644 index 0000000..2e88736 --- /dev/null +++ b/tests/error.rs @@ -0,0 +1,33 @@ +use mlua::{Error, ErrorContext, Lua, Result}; + +#[test] +fn test_error_context() -> Result<()> { + let lua = Lua::new(); + + let func = lua.create_function(|_, ()| { + Err::<(), _>(Error::RuntimeError("runtime error".into())).context("some context") + })?; + lua.globals().set("func", func)?; + + let msg = lua + .load("local _, err = pcall(func); return tostring(err)") + .eval::()?; + assert!(msg.contains("some context")); + assert!(msg.contains("runtime error")); + + let func2 = lua.create_function(|lua, ()| { + lua.globals() + .get::<_, String>("nonextant") + .with_context(|_| "failed to find global") + })?; + lua.globals().set("func2", func2)?; + + let msg2 = lua + .load("local _, err = pcall(func2); return tostring(err)") + .eval::()?; + assert!(msg2.contains("failed to find global")); + println!("{msg2}"); + assert!(msg2.contains("error converting Lua nil to String")); + + Ok(()) +}