rscheck-cli 0.1.0-alpha.3

CLI frontend for the rscheck policy engine.
Documentation
use super::AbsoluteFilesystemPathsRule;
use crate::config::Level;
use crate::test_support::run_single_file_rule;

#[test]
fn flags_unix_absolute_path_in_literal() {
    let findings = run_single_file_rule(
        &AbsoluteFilesystemPathsRule,
        "portability.absolute_literal_paths",
        Level::Warn,
        toml::Table::new(),
        r#"
fn f() {
    let _p = "/etc/passwd";
    let _q = "rel/path";
}
"#,
    );
    assert_eq!(findings.len(), 1);
    assert!(findings[0].message.contains("/etc/passwd"));
}

#[test]
fn does_not_flag_safe_literal_patterns() {
    for code in [
        r#"
fn f(line: &str) -> bool {
    line.trim_start().starts_with("//!") || line.trim_start().starts_with("/*!")
}
        "#,
        r#"
fn routes() {
    let _api = "/api/v1/users";
    let _templated = "/users/{id}";
}
"#,
    ] {
        let findings = run_single_file_rule(
            &AbsoluteFilesystemPathsRule,
            "portability.absolute_literal_paths",
            Level::Warn,
            toml::Table::new(),
            code,
        );
        assert!(findings.is_empty());
    }
}