gobby-code 1.3.3

Fast Rust CLI for Gobby's code index — AST-aware search, symbol navigation, and dependency graph
Documentation
use super::super::UnsupportedFileType;
use super::super::lifecycle::current_file_state;
use super::fixtures::write_file;

#[test]
fn current_file_state_keeps_unhashable_paths_present() {
    let temp = tempfile::tempdir().expect("tempdir");
    write_file(temp.path(), "src/lib.rs", b"fn main() {}\n");
    std::fs::create_dir_all(temp.path().join("src/unreadable")).expect("create directory");

    let state = current_file_state(
        temp.path(),
        &[
            temp.path().join("src/lib.rs"),
            temp.path().join("src/unreadable"),
        ],
        &[],
    );

    assert!(state.present_paths.contains("src/lib.rs"));
    assert!(state.present_paths.contains("src/unreadable"));
    assert!(state.hashes.contains_key("src/lib.rs"));
    assert!(!state.hashes.contains_key("src/unreadable"));
}

#[test]
fn unsupported_file_types_group_content_only_paths() {
    let temp = tempfile::tempdir().expect("tempdir");
    write_file(temp.path(), "notes.txt", b"plain notes\n");
    write_file(temp.path(), "docs/tasks.TXT", b"more notes\n");
    write_file(temp.path(), "README.md", b"# Project\n");
    write_file(temp.path(), "docs/reference.markdown", b"# Reference\n");
    write_file(temp.path(), "Dockerfile", b"FROM rust:latest\n");

    let unsupported = super::super::util::unsupported_file_types(
        temp.path(),
        &[
            temp.path().join("notes.txt"),
            temp.path().join("docs/tasks.TXT"),
            temp.path().join("README.md"),
            temp.path().join("docs/reference.markdown"),
            temp.path().join("Dockerfile"),
        ],
    );

    assert_eq!(
        unsupported,
        vec![
            UnsupportedFileType {
                extension: ".markdown".to_string(),
                files: 1,
                examples: vec!["docs/reference.markdown".to_string()],
            },
            UnsupportedFileType {
                extension: ".md".to_string(),
                files: 1,
                examples: vec!["README.md".to_string()],
            },
            UnsupportedFileType {
                extension: ".txt".to_string(),
                files: 2,
                examples: vec!["notes.txt".to_string(), "docs/tasks.TXT".to_string()],
            },
            UnsupportedFileType {
                extension: "extensionless".to_string(),
                files: 1,
                examples: vec!["Dockerfile".to_string()],
            },
        ]
    );
}