Skip to content

Commit 12cb847

Browse files
committed
Add tests to get a clearer understanding about some special cases (#1914)
1 parent 5fa79d9 commit 12cb847

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

gix-revision/tests/revision/spec/parse/navigate/caret_symbol.rs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
use gix_revision::{spec, spec::parse::delegate::Traversal};
2-
31
use crate::spec::parse::{parse, try_parse, PeelToOwned as PeelTo};
2+
use gix_revision::{spec, spec::parse::delegate::Traversal};
43

54
#[test]
65
fn single_is_first_parent() {
@@ -190,6 +189,23 @@ fn invalid_object_type() {
190189
);
191190
}
192191

192+
#[test]
193+
fn invalid_caret_without_previous_refname() {
194+
let rec = parse(r"^^");
195+
assert_eq!(rec.calls, 2);
196+
assert_eq!(rec.kind, Some(gix_revision::spec::Kind::ExcludeReachable));
197+
assert_eq!(
198+
rec.traversal,
199+
[Traversal::NthParent(1)],
200+
"This can trip off an implementation as it's actually invalid, but looks valid"
201+
);
202+
203+
for revspec in ["^^^HEAD", "^^HEAD"] {
204+
let err = try_parse(revspec).unwrap_err();
205+
assert!(matches!(err, spec::parse::Error::UnconsumedInput {input} if input == "HEAD"));
206+
}
207+
}
208+
193209
#[test]
194210
fn incomplete_escaped_braces_in_regex_are_invalid() {
195211
let err = try_parse(r"@^{/a\{1}}").unwrap_err();

0 commit comments

Comments
 (0)