mlua-periphery 1.2.4

A Rust-native implementation of lua-periphery for mlua.
mod testsupport;

use mlua::Lua;
use std::env;
use std::error::Error;

const ARGON40_SET_FAN_SPEED: &str = "ARGON40_SET_FAN_SPEED";

#[test]
fn set_fan_speed() -> Result<(), Box<dyn Error>> {
    let (skip, device) = testsupport::get_i2c_device()?;
    if skip {
        return Ok(());
    }
    let speed = match env::var(ARGON40_SET_FAN_SPEED) {
        Ok(ok) => ok,
        Err(_e) => {
            log::warn!("Skipping test because no {ARGON40_SET_FAN_SPEED} is set");
            return Ok(());
        }
    };
    let lua = Lua::new();
    mlua_periphery::preload(&lua)?;
    testsupport::preload(&lua)?;
    let script = r#"
        local I2C = require('periphery.I2C')
        local i2c = I2C('_device_')
        local messages = { {_speed_} }
        return i2c:transfer(0x1a, messages)
    "#
    .replace("_device_", &device)
    .replace("_speed_", &speed);
    lua.load(script).exec()?;
    Ok(())
}