weavatrix-worktree 0.2.0

Bounded, crash-recoverable multi-file worktree edits for source refactoring
Documentation
use super::matches_present_evidence;
use crate::{
    filesystem::{FileIdentity, PortablePermissions, PresentEvidence},
    hash::Sha256Hash,
    operation::recovery_model::PresentSpec,
};

#[test]
fn exact_match_includes_identity_and_permissions() {
    let identity = FileIdentity {
        device: 1,
        inode: 2,
    };
    let permissions = PortablePermissions {
        readonly: false,
        unix_mode: Some(0o644),
    };
    let expected = PresentSpec {
        sha256: Sha256Hash::compute(b"x"),
        bytes: 1,
        permissions,
        identity: Some(identity),
    };
    let actual = PresentEvidence {
        sha256: expected.sha256,
        bytes: 1,
        permissions,
        identity,
    };
    assert!(matches_present_evidence(&expected, actual, Some(identity)));
    assert!(!matches_present_evidence(
        &expected,
        PresentEvidence {
            identity: FileIdentity {
                device: 1,
                inode: 3,
            },
            ..actual
        },
        Some(identity)
    ));
}