Skip to content

Commit

Permalink
refactor, add complex test for traversal (#427)
Browse files Browse the repository at this point in the history
  • Loading branch information
Byron committed Aug 2, 2022
1 parent 84b5448 commit 4f83470
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 41 deletions.
Git LFS file not shown
14 changes: 14 additions & 0 deletions git-repository/tests/fixtures/make_rev_spec_parse_repos.sh
Expand Up @@ -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"
)
40 changes: 1 addition & 39 deletions git-repository/tests/revision/spec/from_bytes/mod.rs
Expand Up @@ -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;
Expand Down
52 changes: 52 additions & 0 deletions 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"
);
}

0 comments on commit 4f83470

Please sign in to comment.