Skip to main content

mit_commit_message_lints/lints/cmd/
set_status.rs

1use miette::Result;
2use mit_lint::Lints;
3
4use crate::external::Vcs;
5/// # Errors
6///
7/// Errors if writing to the VCS config fails
8pub fn set_status(lints: Lints, vcs: &mut dyn Vcs, status: bool) -> Result<()> {
9    lints
10        .config_keys()
11        .into_iter()
12        .try_for_each(|lint| vcs.set_str(&lint, &status.to_string()))?;
13    Ok(())
14}
15
16#[cfg(test)]
17mod tests {
18    use std::collections::{BTreeMap, BTreeSet};
19
20    use mit_lint::{Lint, Lints};
21
22    use crate::{external::InMemory, lints::cmd::set_status::set_status};
23
24    #[test]
25    fn we_can_enable_lints() {
26        let mut strings = BTreeMap::new();
27        strings.insert("mit.lint.pivotal-tracker-id-missing".into(), "false".into());
28        let mut config = InMemory::new(&mut strings);
29
30        let mut lints = BTreeSet::new();
31        lints.insert(Lint::PivotalTrackerIdMissing);
32
33        set_status(Lints::new(lints), &mut config, true).unwrap();
34
35        let expected = "true".to_string();
36        let actual = strings
37            .get("mit.lint.pivotal-tracker-id-missing")
38            .unwrap()
39            .clone();
40        assert_eq!(
41            expected, actual,
42            "Expected the lint to be enabled, instead got {actual}"
43        );
44    }
45
46    #[test]
47    fn we_can_disable_lints() {
48        let mut strings = BTreeMap::new();
49        strings.insert("mit.lint.pivotal-tracker-id-missing".into(), "true".into());
50        let mut config = InMemory::new(&mut strings);
51
52        let mut lints = BTreeSet::new();
53        lints.insert(Lint::PivotalTrackerIdMissing);
54
55        set_status(Lints::new(lints), &mut config, false).unwrap();
56
57        let expected = "false".to_string();
58        let actual = strings
59            .get("mit.lint.pivotal-tracker-id-missing")
60            .unwrap()
61            .clone();
62        assert_eq!(
63            expected, actual,
64            "Expected the lint to be disabled, instead got {actual}"
65        );
66    }
67}