Sebastian Thiel`just fmt`ffc12763 years agoHistory
90 lines · 2.3 KB · Rust
RawDownload
use std::path::PathBuf; use gix_hash::ObjectId; mod commit;mod encode;mod object_ref;mod tag;mod tree; #[test]fn compute_hash() {    let hk = gix_hash::Kind::Sha1;    assert_eq!(        gix_object::compute_hash(hk, gix_object::Kind::Blob, &[]),        gix_hash::ObjectId::empty_blob(hk)    );    assert_eq!(        gix_object::compute_hash(hk, gix_object::Kind::Tree, &[]),        gix_hash::ObjectId::empty_tree(hk)    );} type Result<T = ()> = std::result::Result<T, Box<dyn std::error::Error>>; #[cfg(not(windows))]fn fixup(v: Vec<u8>) -> Vec<u8> {    v} #[cfg(windows)]fn fixup(v: Vec<u8>) -> Vec<u8> {    // Git checks out text files with line ending conversions, git itself will of course not put '\r\n' anywhere,    // so that wouldn't be expected in an object and doesn't have to be parsed.    use bstr::ByteSlice;    v.replace(b"\r\n", "\n")} pub fn fixture(path: &str) -> PathBuf {    PathBuf::from("tests/fixtures").join(path)} fn fixture_bytes(path: &str) -> Vec<u8> {    fixup(std::fs::read(fixture(path)).unwrap())} fn fixture_name(kind: &str, path: &str) -> Vec<u8> {    fixup(fixture_bytes(PathBuf::from(kind).join(path).to_str().unwrap()))} #[test]fn size_in_memory() {    let actual = std::mem::size_of::<gix_object::Object>();    assert!(        actual <= 264,        "{actual} <= 264: Prevent unexpected growth of what should be lightweight objects"    )} fn hex_to_id(hex: &str) -> ObjectId {    ObjectId::from_hex(hex.as_bytes()).expect("40 bytes hex")} use gix_actor::{Sign, Time}; fn signature(time: u32) -> gix_actor::SignatureRef<'static> {    use gix_object::bstr::ByteSlice;    gix_actor::SignatureRef {        name: b"Sebastian Thiel".as_bstr(),        email: b"sebastian.thiel@icloud.com".as_bstr(),        time: Time {            seconds_since_unix_epoch: time,            offset_in_seconds: 28800,            sign: Sign::Plus,        },    }} fn linus_signature(time: u32) -> gix_actor::SignatureRef<'static> {    use gix_object::bstr::ByteSlice;    gix_actor::SignatureRef {        name: b"Linus Torvalds".as_bstr(),        email: b"torvalds@linux-foundation.org".as_bstr(),        time: Time {            seconds_since_unix_epoch: time,            offset_in_seconds: -25200,            sign: Sign::Minus,        },    }}