mlua-socket 0.2.7

A Rust-native implementation of LuaSocket for mlua.
use mlua::{Error, Lua};

const MODULE_SCRIPT: &str = include_str!("except.lua");

pub fn preload(lua: &Lua) -> Result<(), Error> {
    let script = format!("package.preload['socket.except'] = function() {MODULE_SCRIPT} end");
    lua.load(script).exec()?;
    Ok(())
}

#[cfg(test)]
mod tests {
    use mlua::{Lua, Table};
    use std::error::Error;

    #[test]
    fn preload() -> Result<(), Box<dyn Error>> {
        let lua = Lua::new();
        crate::preload(&lua)?;
        let _module: Table = lua
            .load(
                r#"
                return require('socket.except')
            "#,
            )
            .eval()?;
        Ok(())
    }

    #[test]
    fn excepttest() -> Result<(), Box<dyn Error>> {
        static EXCEPTTEST_SCRIPT: &str = include_str!("excepttest.lua");
        let lua = Lua::new();
        crate::preload(&lua)?;
        lua.load(EXCEPTTEST_SCRIPT).exec()?;
        Ok(())
    }
}