Skip to content

Commit df5cead

Browse files
authored
Merge pull request #1733 from GitoxideLabs/fix-testools
fix: fix check to detect `git-lfs` managed files that weren't checked out.
2 parents cbdbb8a + 14c3744 commit df5cead

File tree

4 files changed

+50
-7
lines changed

4 files changed

+50
-7
lines changed

gix-revision/src/spec/parse/function.rs

+17-3
Original file line numberDiff line numberDiff line change
@@ -429,9 +429,23 @@ where
429429
}
430430
} else if has_ref_or_implied_name {
431431
delegate
432-
.reflog(delegate::ReflogLookup::Entry(
433-
n.try_into().expect("non-negative isize fits usize"),
434-
))
432+
.reflog(if n >= 100000000 {
433+
let time = nav
434+
.to_str()
435+
.map_err(|_| Error::Time {
436+
input: nav.into(),
437+
source: None,
438+
})
439+
.and_then(|date| {
440+
gix_date::parse(date, None).map_err(|err| Error::Time {
441+
input: nav.into(),
442+
source: err.into(),
443+
})
444+
})?;
445+
delegate::ReflogLookup::Date(time)
446+
} else {
447+
delegate::ReflogLookup::Entry(n.try_into().expect("non-negative isize fits usize"))
448+
})
435449
.ok_or(Error::Delegate)?;
436450
} else {
437451
return Err(Error::ReflogLookupNeedsRefName { name: (*name).into() });

gix-revision/tests/revision/spec/parse/anchor/at_symbol.rs

+25
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,31 @@ fn reflog_by_date_for_current_branch() {
4747
assert_eq!(rec.calls, 1);
4848
}
4949

50+
#[test]
51+
fn reflog_by_unix_timestamp_for_current_branch() {
52+
let rec = parse("@{100000000}");
53+
54+
assert!(rec.kind.is_none());
55+
assert_eq!(rec.find_ref[0], None,);
56+
assert_eq!(
57+
rec.prefix[0], None,
58+
"neither ref nor prefixes are set, straight to navigation"
59+
);
60+
assert_eq!(
61+
rec.current_branch_reflog_entry[0],
62+
Some("100000000 +0000".to_string()),
63+
"This number is the first to count as date"
64+
);
65+
assert_eq!(rec.calls, 1);
66+
67+
let rec = parse("@{99999999}");
68+
assert_eq!(
69+
rec.current_branch_reflog_entry[0],
70+
Some("99999999".to_string()),
71+
"one less is an offset though"
72+
);
73+
}
74+
5075
#[test]
5176
fn reflog_by_date_with_date_parse_failure() {
5277
let err = try_parse("@{foo}").unwrap_err();

gix/tests/gix/repository/mod.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,18 @@ mod revision {
2727
fn date() -> crate::Result {
2828
let repo = crate::named_repo("make_rev_parse_repo.sh")?;
2929
let actual = repo
30-
.rev_parse_single("old@{10 years ago}")
30+
.rev_parse_single("old@{20 years ago}")
3131
.expect("it returns the oldest possible rev when overshooting");
3232
assert_eq!(actual, hex_to_id("be2f093f0588eaeb71e1eff7451b18c2a9b1d765"));
3333

3434
let actual = repo
35-
.rev_parse_single("old@{1 month ago}")
35+
.rev_parse_single("old@{1732184844}")
3636
.expect("it finds something in the middle");
37-
assert_eq!(actual, hex_to_id("b29405fe9147a3a366c4048fbe295ea04de40fa6"));
37+
assert_eq!(
38+
actual,
39+
hex_to_id("b29405fe9147a3a366c4048fbe295ea04de40fa6"),
40+
"It also figures out that we don't mean an index, but a date"
41+
);
3842
Ok(())
3943
}
4044
}

tests/tools/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ fn should_skip_all_archive_creation() -> bool {
680680
}
681681

682682
fn is_lfs_pointer_file(path: &Path) -> bool {
683-
const PREFIX: &[u8] = b"version https://gix-lfs";
683+
const PREFIX: &[u8] = b"version https://git-lfs";
684684
let mut buf = [0_u8; PREFIX.len()];
685685
std::fs::OpenOptions::new()
686686
.read(true)

0 commit comments

Comments
 (0)