dstest 0.1.6

Deterministic Simulation Testing for containerised services
use mlua::{Lua, Result, Table};

use crate::bindings::LuaModule;
use crate::engine::context::BindingContext;
use crate::substrate::Substrate;

pub struct Log;

impl<S: Substrate> LuaModule<S> for Log {
    fn register(lua: &Lua, dstest: &Table, _: &BindingContext<S>) -> Result<()> {
        let debug_fn = lua.create_function(|_, msg: String| {
            tracing::debug!("{}", msg);
            Ok(())
        })?;

        let info_fn = lua.create_function(|_, msg: String| {
            tracing::info!("{}", msg);
            Ok(())
        })?;

        let warn_fn = lua.create_function(|_, msg: String| {
            tracing::warn!("{}", msg);
            Ok(())
        })?;

        let error_fn = lua.create_function(|_, msg: String| {
            tracing::error!("{}", msg);
            Ok(())
        })?;

        dstest.set("debug", debug_fn)?;
        dstest.set("info", info_fn)?;
        dstest.set("warn", warn_fn)?;
        dstest.set("error", error_fn)?;
        Ok(())
    }
}