Add tests for count_repositories

This commit is contained in:
Max Smirnov 2022-08-22 16:12:21 +03:00
parent 7139663544
commit 3ead212fe7
No known key found for this signature in database
GPG Key ID: 2C3271EA73A3F336
4 changed files with 69 additions and 3 deletions

View File

@ -5,7 +5,7 @@ use std::{fs::{read_dir, ReadDir}, path::Path, result::Result as StdResult, iter
/// so to get the amount of repos, we just have to count everything
/// in `*/*/*` to get the count.
#[instrument]
pub(crate) fn count_repositories<P>(repo_path: P) -> Result<usize>
pub fn count_repositories<P>(repo_path: P) -> Result<usize>
where
P: AsRef<Path> + std::fmt::Debug,
{

View File

@ -5,7 +5,7 @@ use std::fmt;
pub(crate) type Result<T> = std::result::Result<T, Error>;
#[derive(Debug)]
pub(crate) enum Error {
pub enum Error {
Badge(String),
Client(reqwest::Error),
Git(git2::Error),

View File

@ -11,7 +11,7 @@ extern crate tracing;
mod cache;
pub mod config;
mod count;
pub mod count;
mod error;
mod service;
mod statics;

66
tests/count.rs Normal file
View File

@ -0,0 +1,66 @@
use hoc::count::count_repositories;
use tempfile::TempDir;
#[test]
fn no_repos() {
let repos = TempDir::new().unwrap();
assert_eq!(0, count_repositories(&repos).unwrap())
}
#[test]
fn no_repos_for_provider() {
let repos = TempDir::new().unwrap();
let _provider = TempDir::new_in(&repos).unwrap();
assert_eq!(0, count_repositories(&repos).unwrap())
}
#[test]
fn no_repos_for_owner() {
let repos = TempDir::new().unwrap();
let provider = TempDir::new_in(&repos).unwrap();
let _owner = TempDir::new_in(&provider).unwrap();
assert_eq!(0, count_repositories(&repos).unwrap())
}
#[test]
fn one_repo_for_owner() {
let repos = TempDir::new().unwrap();
let provider = TempDir::new_in(&repos).unwrap();
let owner = TempDir::new_in(&provider).unwrap();
let _repo = TempDir::new_in(&owner).unwrap();
assert_eq!(1, count_repositories(&repos).unwrap())
}
#[test]
fn two_repos_for_owner() {
let repos = TempDir::new().unwrap();
let provider = TempDir::new_in(&repos).unwrap();
let owner = TempDir::new_in(&provider).unwrap();
let _repo1 = TempDir::new_in(&owner).unwrap();
let _repo2 = TempDir::new_in(&owner).unwrap();
assert_eq!(2, count_repositories(&repos).unwrap())
}
#[test]
fn two_repos_for_two_providers() {
let repos = TempDir::new().unwrap();
let provider1 = TempDir::new_in(&repos).unwrap();
let owner1 = TempDir::new_in(&provider1).unwrap();
let _repo1 = TempDir::new_in(&owner1).unwrap();
let provider2 = TempDir::new_in(&repos).unwrap();
let owner2 = TempDir::new_in(&provider2).unwrap();
let _repo2 = TempDir::new_in(&owner2).unwrap();
assert_eq!(2, count_repositories(&repos).unwrap())
}
#[test]
fn two_subdirs_in_one_repo() {
let repos = TempDir::new().unwrap();
let provider = TempDir::new_in(&repos).unwrap();
let owner = TempDir::new_in(&provider).unwrap();
let repo = TempDir::new_in(&owner).unwrap();
let _subdir1 = TempDir::new_in(&repo).unwrap();
let _subdir2 = TempDir::new_in(&repo).unwrap();
assert_eq!(1, count_repositories(&repos).unwrap())
}