• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Blightmud / Blightmud / 14316676040

07 Apr 2025 06:27PM UTC coverage: 74.417% (-0.9%) from 75.283%
14316676040

push

github

web-flow
Merge pull request #1202 from Blightmud/dependabot/cargo/rustls-0.23.25

build(deps): bump rustls from 0.23.23 to 0.23.25

7089 of 9526 relevant lines covered (74.42%)

431.56 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

80.77
/src/lua/settings.rs
1
use super::{backend::Backend, constants::BACKEND};
2
use crate::{event::Event, io::SaveData, model};
3
use mlua::{Error, Result, Table, UserData, UserDataMethods};
4

5
pub struct Settings {}
6

7
impl Settings {
8
    pub const LUA_GLOBAL_NAME: &'static str = "settings";
9

10
    pub fn new() -> Self {
167✔
11
        Self {}
167✔
12
    }
167✔
13
}
14

15
impl UserData for Settings {
16
    fn add_methods<'lua, M: UserDataMethods<'lua, Self>>(methods: &mut M) {
167✔
17
        methods.add_function("list", |ctx, _: ()| -> Result<Table<'lua>> {
167✔
18
            let settings = model::Settings::try_load().map_err(Error::external)?;
1✔
19
            let result = ctx.create_table()?;
1✔
20
            model::SETTINGS.iter().try_for_each(|key| {
13✔
21
                result.set(key.to_string(), settings.get(key).map_err(Error::external)?)
13✔
22
            })?;
13✔
23
            Ok(result)
1✔
24
        });
1✔
25
        methods.add_function("get", |_ctx, key: String| -> Result<bool> {
337✔
26
            let settings = model::Settings::try_load().map_err(Error::external)?;
337✔
27
            settings.get(key.as_str()).map_err(Error::external)
337✔
28
        });
337✔
29
        methods.add_function("set", |ctx, (key, val): (String, bool)| {
167✔
30
            let mut settings = model::Settings::try_load().map_err(Error::external)?;
×
31
            settings.set(key.as_str(), val).map_err(Error::external)?;
×
32
            settings.save();
×
33
            let backend: Backend = ctx.named_registry_value(BACKEND)?;
×
34
            backend
×
35
                .writer
×
36
                .send(Event::SettingChanged(key, val))
×
37
                .map_err(Error::external)?;
×
38
            Ok(())
×
39
        });
×
40
    }
167✔
41
}
42

43
#[cfg(test)]
44
mod test_settings {
45
    use super::Settings;
46
    use crate::model;
47
    use mlua::Lua;
48

49
    #[test]
50
    fn test_list_settings() {
1✔
51
        let lua = Lua::new();
1✔
52
        lua.globals()
1✔
53
            .set(Settings::LUA_GLOBAL_NAME, Settings::new())
1✔
54
            .unwrap();
1✔
55

1✔
56
        let settings_table: mlua::Table = lua.load("return settings.list()").call(()).unwrap();
1✔
57

1✔
58
        assert!(matches!(
1✔
59
            settings_table.raw_get(model::MOUSE_ENABLED).unwrap(),
1✔
60
            mlua::Value::Boolean(_),
61
        ));
62
    }
1✔
63

64
    #[test]
65
    fn test_get_settings() {
1✔
66
        let lua = Lua::new();
1✔
67
        lua.globals()
1✔
68
            .set(Settings::LUA_GLOBAL_NAME, Settings::new())
1✔
69
            .unwrap();
1✔
70

1✔
71
        let value: mlua::Value = lua
1✔
72
            .load("return settings.get(\"mouse_enabled\")")
1✔
73
            .call(())
1✔
74
            .unwrap();
1✔
75

1✔
76
        assert!(matches!(value, mlua::Value::Boolean(_)));
1✔
77
    }
1✔
78
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc