Test canonical refs are set

Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
This commit is contained in:
Alexis Sellier 2022-10-19 15:35:35 +02:00
parent e6fd85f249
commit 961c18319f
No known key found for this signature in database
3 changed files with 27 additions and 12 deletions

View File

@ -18,7 +18,9 @@ pub use ext::NotFound;
pub use ext::Oid; pub use ext::Oid;
pub use git2 as raw; pub use git2 as raw;
pub use git_ref_format as fmt; pub use git_ref_format as fmt;
pub use git_ref_format::{lit, name, refname, Component, Namespaced, Qualified, RefStr, RefString}; pub use git_ref_format::{
lit, name, qualified, refname, Component, Namespaced, Qualified, RefStr, RefString,
};
pub use git_url as url; pub use git_url as url;
pub use git_url::Url; pub use git_url::Url;
pub use radicle_git_ext as ext; pub use radicle_git_ext as ext;

View File

@ -352,6 +352,19 @@ mod tests {
.collect::<Result<_, _>>() .collect::<Result<_, _>>()
.unwrap(); .unwrap();
let project_repo = storage.repository(proj).unwrap();
let (head, _) = project_repo.head().unwrap();
// Test canonical refs.
assert_eq!(project_repo.raw().refname_to_id("HEAD").unwrap(), *head);
assert_eq!(
project_repo
.raw()
.refname_to_id("refs/heads/master")
.unwrap(),
*head
);
assert_eq!(remotes[&public_key].refs, refs); assert_eq!(remotes[&public_key].refs, refs);
assert_eq!(project.name, "acme"); assert_eq!(project.name, "acme");
assert_eq!(project.description, "Acme's repo"); assert_eq!(project.description, "Acme's repo");

View File

@ -424,6 +424,17 @@ impl ReadRepository for Repository {
self.backend.find_reference(&name).map_err(git::Error::from) self.backend.find_reference(&name).map_err(git::Error::from)
} }
fn reference_oid(
&self,
remote: &RemoteId,
reference: &git::Qualified,
) -> Result<Oid, git::Error> {
let name = reference.with_namespace(remote.into());
let oid = self.backend.refname_to_id(&name)?;
Ok(oid.into())
}
fn commit(&self, oid: Oid) -> Result<git2::Commit, git::Error> { fn commit(&self, oid: Oid) -> Result<git2::Commit, git::Error> {
self.backend self.backend
.find_commit(oid.into()) .find_commit(oid.into())
@ -437,17 +448,6 @@ impl ReadRepository for Repository {
Ok(revwalk) Ok(revwalk)
} }
fn reference_oid(
&self,
remote: &RemoteId,
reference: &git::Qualified,
) -> Result<Oid, git::Error> {
let name = reference.with_namespace(remote.into());
let oid = self.backend.refname_to_id(&name)?;
Ok(oid.into())
}
fn remote(&self, remote: &RemoteId) -> Result<Remote<Verified>, refs::Error> { fn remote(&self, remote: &RemoteId) -> Result<Remote<Verified>, refs::Error> {
let refs = SignedRefs::load(remote, self)?; let refs = SignedRefs::load(remote, self)?;
Ok(Remote::new(*remote, refs)) Ok(Remote::new(*remote, refs))