fn get_lockfile_test()

in xar/clean_xar_mounts/src/main.rs [241:300]


fn get_lockfile_test() {
    // Helper to make a MountedFilesystem object.
    fn make_mf(mountpoint: &str) -> MountedFilesystem {
        MountedFilesystem {
            mountpoint: String::from(mountpoint),
            chroot: PathBuf::from("/"),
            fstype: String::from("fuse.squashfuse_ll"),
        }
    }

    let logger = setup_logger(slog::Level::Debug);

    // Confirm parsing a non-seed'd directory works
    let mf = make_mf("/mnt/xarfuse/uid-0/8f583eae-ns-4026531840");
    assert_eq!(
        get_lockfile_path(&logger, &mf),
        vec![
            PathBuf::from("/mnt/xarfuse/uid-0/lockfile.8f583eae-ns-4026531840"),
            PathBuf::from("/mnt/xarfuse/uid-0/lockfile.8f583eae"),
        ]
    );

    // Confirm parsing a non-seed'd /dev/shm directory works
    let mf = make_mf("/dev/shm/uid-0/8f583eae-ns-4026531840");
    assert_eq!(
        get_lockfile_path(&logger, &mf),
        vec![
            PathBuf::from("/dev/shm/uid-0/lockfile.8f583eae-ns-4026531840"),
            PathBuf::from("/dev/shm/uid-0/lockfile.8f583eae"),
        ],
    );

    // Confirm parsing a seed'd directory works
    let mf = make_mf("/mnt/xarfuse/uid-0/8f583eae-seed-test-ns-4026531840");
    assert_eq!(
        get_lockfile_path(&logger, &mf),
        vec![
            PathBuf::from("/mnt/xarfuse/uid-0/lockfile.8f583eae-seed-test-ns-4026531840"),
            PathBuf::from("/mnt/xarfuse/uid-0/lockfile.8f583eae"),
        ],
    );

    // Confirm parsing a seed'd directory with dashes works
    let mf = make_mf("/mnt/xarfuse/uid-0/8f583eae-seed-test-foo-bar-ns-4026531840");
    assert_eq!(
        get_lockfile_path(&logger, &mf),
        vec![
            PathBuf::from("/mnt/xarfuse/uid-0/lockfile.8f583eae-seed-test-foo-bar-ns-4026531840"),
            PathBuf::from("/mnt/xarfuse/uid-0/lockfile.8f583eae"),
        ],
    );

    // Confirm parsing a non-xar directory returns empty vec
    let mf = make_mf("/var/releases/continuous_www_scripts9999");
    assert!(get_lockfile_path(&logger, &mf).is_empty());

    // Confirm a random path doesn't parse
    let mf = make_mf("/dev/null");
    assert!(get_lockfile_path(&logger, &mf).is_empty());
}