From 2eb40deafd13fd0260de6b911d84a677f801897b Mon Sep 17 00:00:00 2001 From: Alex Orlenko Date: Sat, 6 Jun 2020 15:49:24 +0100 Subject: [PATCH] Add test to check loading module from lua coroutine (thread) --- examples/module/src/lib.rs | 5 +++++ tests/module/tests/load.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/examples/module/src/lib.rs b/examples/module/src/lib.rs index 0c742f5..24056a1 100644 --- a/examples/module/src/lib.rs +++ b/examples/module/src/lib.rs @@ -4,9 +4,14 @@ fn sum(_: &Lua, (a, b): (i64, i64)) -> LuaResult { Ok(a + b) } +fn used_memory(lua: &Lua, _: ()) -> LuaResult { + Ok(lua.used_memory()) +} + #[mlua_derive::lua_module] fn rust_module(lua: &Lua) -> LuaResult { let exports = lua.create_table()?; exports.set("sum", lua.create_function(sum)?)?; + exports.set("used_memory", lua.create_function(used_memory)?)?; Ok(exports) } diff --git a/tests/module/tests/load.rs b/tests/module/tests/load.rs index 3456b8c..dedbe1f 100644 --- a/tests/module/tests/load.rs +++ b/tests/module/tests/load.rs @@ -15,6 +15,33 @@ fn test_module() -> Result<()> { .exec() } +#[cfg(any( + feature = "lua54", + feature = "lua53", + feature = "lua52", + feature = "lua51" +))] +#[test] +fn test_module_from_thread() -> Result<()> { + let lua = make_lua()?; + lua.load( + r#" + local mod + + local co = coroutine.create(function(a, b) + mod = require("rust_module") + assert(mod.sum(a, b) == a + b) + end) + + coroutine.resume(co, 3, 5) + collectgarbage() + + assert(mod.used_memory() > 0) + "#, + ) + .exec() +} + fn make_lua() -> Result { let (dylib_path, dylib_ext, separator); if cfg!(target_os = "macos") {