Skip to main content

frs/cmds/rsl/output/format/
aliased_import.rs

1use super::super::ViolationOutputFormat;
2use super::FormattedRuleViolation;
3use super::format_violation;
4use crate::cmds::rsl::rules::TypedRule;
5use crate::cmds::rsl::rules::aliased_import::AliasedImportRule;
6use crate::cmds::rsl::rules::aliased_import::AliasedImportViolation;
7
8impl FormattedRuleViolation for AliasedImportViolation {
9    fn format(&self, output_format: ViolationOutputFormat) -> String {
10        format_violation(
11            &self.location,
12            <AliasedImportRule as TypedRule>::code(),
13            &format!("use unaliased import `{}` if it doesn't clash", self.unaliased_import),
14            output_format,
15        )
16    }
17}
18
19#[cfg(test)]
20mod tests {
21    use std::path::PathBuf;
22
23    use super::super::super::ViolationOutputFormat;
24    use super::super::FormattedRuleViolation;
25    use crate::cmds::rsl::rules::aliased_import::AliasedImportViolation;
26    use crate::cmds::rsl::rules::common::Location;
27
28    #[test]
29    fn test_aliased_import_violation_when_details_are_present_formats_compact_output() {
30        let violation = AliasedImportViolation {
31            location: Location::new(PathBuf::from("test.rs"), 4, 13),
32            unaliased_import: "std::fmt::Thing".to_owned(),
33        };
34
35        assert_eq!(
36            FormattedRuleViolation::format(&violation, ViolationOutputFormat::Compact),
37            "test.rs:4:13,use unaliased import `std::fmt::Thing` if it doesn't clash"
38        );
39    }
40}