mit_commit_message_lints/lints/cmd/
set_status.rs1use miette::Result;
2use mit_lint::Lints;
3
4use crate::external::Vcs;
5pub 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}