diff --git a/git-repository/tests/fixtures/generated-archives/make_rev_spec_parse_repos.tar.xz b/git-repository/tests/fixtures/generated-archives/make_rev_spec_parse_repos.tar.xz index cec8beee10..14924d880f 100644 --- a/git-repository/tests/fixtures/generated-archives/make_rev_spec_parse_repos.tar.xz +++ b/git-repository/tests/fixtures/generated-archives/make_rev_spec_parse_repos.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:15daf80cdca30bfed1844c71a4a2e88becb4e2e08972f4a6ea42eefc23f43000 -size 27980 +oid sha256:f5cde687a063623b1277f179c2015a08b07e819ad8278a066172c3fc4e08316e +size 28084 diff --git a/git-repository/tests/fixtures/make_rev_spec_parse_repos.sh b/git-repository/tests/fixtures/make_rev_spec_parse_repos.sh index 9cdcf3fdbf..2e41220b4a 100644 --- a/git-repository/tests/fixtures/make_rev_spec_parse_repos.sh +++ b/git-repository/tests/fixtures/make_rev_spec_parse_repos.sh @@ -356,4 +356,18 @@ git init complex_graph baseline "a^42" baseline "a~42" baseline "a~3" + + baseline "b" + baseline "a^" + baseline "c" + baseline "a^2" + baseline "d" + baseline "a^^" + baseline "a^1^1" + baseline "a~2" + baseline "e" + baseline "a^^2" + baseline "j" + baseline "b^3^2" + baseline "a^^3^2" ) diff --git a/git-repository/tests/revision/spec/from_bytes/mod.rs b/git-repository/tests/revision/spec/from_bytes/mod.rs index d00249365f..aba533215a 100644 --- a/git-repository/tests/revision/spec/from_bytes/mod.rs +++ b/git-repository/tests/revision/spec/from_bytes/mod.rs @@ -8,45 +8,7 @@ pub use util::*; mod ambiguous; mod regex; -mod traverse { - use crate::revision::spec::from_bytes::{parse_spec, repo}; - use git_repository::prelude::ObjectIdExt; - use git_repository::revision::Spec; - use git_testtools::hex_to_id; - - #[test] - fn parent() { - let repo = repo("complex_graph").unwrap(); - assert_eq!( - parse_spec("a^1", &repo).unwrap(), - Spec::from_id(hex_to_id("5b3f9e24965d0b28780b7ce5daf2b5b7f7e0459f").attach(&repo)) - ); - assert_eq!(parse_spec("a", &repo).unwrap(), parse_spec("a^0", &repo).unwrap(),); - assert_eq!( - parse_spec("a^42", &repo).unwrap_err().to_string(), - "Commit 55e825e has 2 parents and parent number 42 is out of range" - ); - } - - #[test] - fn ancestors() { - let repo = repo("complex_graph").unwrap(); - assert_eq!( - parse_spec("a~1", &repo).unwrap(), - Spec::from_id(hex_to_id("5b3f9e24965d0b28780b7ce5daf2b5b7f7e0459f").attach(&repo)) - ); - assert_eq!(parse_spec("a", &repo).unwrap(), parse_spec("a~0", &repo).unwrap(),); - assert_eq!( - parse_spec("a~3", &repo).unwrap(), - Spec::from_id(hex_to_id("9f9eac6bd1cd4b4cc6a494f044b28c985a22972b").attach(&repo)) - ); - assert_eq!( - parse_spec("a~42", &repo).unwrap_err().to_string(), - "Commit 55e825e has 3 ancestors along the first parent and ancestor number 42 is out of range" - ); - } -} - +mod traverse; mod index { use crate::revision::spec::from_bytes::{parse_spec, repo}; use git_repository::prelude::ObjectIdExt; diff --git a/git-repository/tests/revision/spec/from_bytes/traverse.rs b/git-repository/tests/revision/spec/from_bytes/traverse.rs new file mode 100644 index 0000000000..6fcb5f0679 --- /dev/null +++ b/git-repository/tests/revision/spec/from_bytes/traverse.rs @@ -0,0 +1,52 @@ +use crate::revision::spec::from_bytes::{parse_spec, repo}; +use git_repository::prelude::ObjectIdExt; +use git_repository::revision::Spec; +use git_testtools::hex_to_id; + +#[test] +fn complex() -> crate::Result { + let repo = &repo("complex_graph")?; + + assert_eq!(parse_spec("b", repo)?, parse_spec("a~1", repo)?); + assert_eq!(parse_spec("b", repo)?, parse_spec("a^", repo)?); + assert_eq!(parse_spec("c", repo)?, parse_spec("a^2", repo)?); + assert_eq!(parse_spec("d", repo)?, parse_spec("a^^", repo)?); + assert_eq!(parse_spec("d", repo)?, parse_spec("a^1^1", repo)?); + assert_eq!(parse_spec("d", repo)?, parse_spec("a~2", repo)?); + assert_eq!(parse_spec("e", repo)?, parse_spec("a^^2", repo)?); + assert_eq!(parse_spec("j", repo)?, parse_spec("b^3^2", repo)?); + assert_eq!(parse_spec("j", repo)?, parse_spec("a^^3^2", repo)?); + Ok(()) +} + +#[test] +fn parent() { + let repo = repo("complex_graph").unwrap(); + assert_eq!( + parse_spec("a^1", &repo).unwrap(), + Spec::from_id(hex_to_id("5b3f9e24965d0b28780b7ce5daf2b5b7f7e0459f").attach(&repo)) + ); + assert_eq!(parse_spec("a", &repo).unwrap(), parse_spec("a^0", &repo).unwrap(),); + assert_eq!( + parse_spec("a^42", &repo).unwrap_err().to_string(), + "Commit 55e825e has 2 parents and parent number 42 is out of range" + ); +} + +#[test] +fn ancestors() { + let repo = repo("complex_graph").unwrap(); + assert_eq!( + parse_spec("a~1", &repo).unwrap(), + Spec::from_id(hex_to_id("5b3f9e24965d0b28780b7ce5daf2b5b7f7e0459f").attach(&repo)) + ); + assert_eq!(parse_spec("a", &repo).unwrap(), parse_spec("a~0", &repo).unwrap(),); + assert_eq!( + parse_spec("a~3", &repo).unwrap(), + Spec::from_id(hex_to_id("9f9eac6bd1cd4b4cc6a494f044b28c985a22972b").attach(&repo)) + ); + assert_eq!( + parse_spec("a~42", &repo).unwrap_err().to_string(), + "Commit 55e825e has 3 ancestors along the first parent and ancestor number 42 is out of range" + ); +}