Radish alpha
r
rad:z6cFWeWpnZNHh9rUW8phgA3b5yGt
Git libraries for Radicle
Radicle
Git
radicle-git radicle-surf t src threading.rs
use std::sync::{Mutex, MutexGuard};

use radicle_git_ext::ref_format::{name::component, refname};
use radicle_surf::{Branch, Error, Glob, Repository};

use super::GIT_PLATINUM;

#[test]
fn basic_test() -> Result<(), Error> {
    let shared_repo = Mutex::new(Repository::open(GIT_PLATINUM)?);
    let locked_repo: MutexGuard<Repository> = shared_repo.lock().unwrap();
    let mut branches = locked_repo
        .branches(Glob::all_heads().branches().and(Glob::all_remotes()))?
        .collect::<Result<Vec<_>, _>>()?;
    branches.sort();

    let origin = component!("origin");
    let banana = component!("banana");
    assert_eq!(
        branches,
        vec![
            Branch::local(refname!("dev")),
            Branch::local(refname!("diff-test")),
            Branch::local(refname!("empty-branch")),
            Branch::local(refname!("master")),
            Branch::remote(banana.clone(), refname!("orange/pineapple")),
            Branch::remote(banana, refname!("pineapple")),
            Branch::remote(origin.clone(), refname!("HEAD")),
            Branch::remote(origin.clone(), refname!("dev")),
            Branch::remote(origin.clone(), refname!("diff-test")),
            Branch::remote(origin.clone(), refname!("empty-branch")),
            Branch::remote(origin, refname!("master")),
        ]
    );

    Ok(())
}