From c76b35119876c174c02650dafa3496e43150f6a0 Mon Sep 17 00:00:00 2001 From: realaravinth Date: Tue, 29 Mar 2022 18:02:32 +0530 Subject: [PATCH] chore: improve git workflow testing --- Cargo.lock | 19 +++++++++++++++++++ Cargo.toml | 3 +++ src/page.rs | 39 +++++++++++++++++++++++++++++++++------ 3 files changed, 55 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5c6791f..b763548 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -801,6 +801,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "mktemp" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "975de676448231fcde04b9149d2543077e166b78fc29eae5aa219e7928410da2" +dependencies = [ + "uuid", +] + [[package]] name = "nom" version = "5.1.2" @@ -896,6 +905,7 @@ dependencies = [ "git2", "lazy_static", "log", + "mktemp", "num_cpus", "pretty_env_logger", "serde 1.0.136", @@ -1374,6 +1384,15 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", +] + [[package]] name = "vcpkg" version = "0.2.15" diff --git a/Cargo.toml b/Cargo.toml index 67751d7..09859aa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,3 +34,6 @@ url = "2.2" derive_more = "0.99" num_cpus = "1.13" + +[dev-dependencies] +mktemp = "0.4.1" diff --git a/src/page.rs b/src/page.rs index 4f5ce86..a219cc5 100644 --- a/src/page.rs +++ b/src/page.rs @@ -27,7 +27,7 @@ pub struct Page { } impl Page { - pub fn create_repo(&self) -> Repository { + fn create_repo(&self) -> Repository { let repo = Repository::open(&self.path); if let Ok(repo) = repo { @@ -36,9 +36,7 @@ impl Page { info!("Cloning repository {} at {}", self.repo, self.path); Repository::clone(&self.repo, &self.path).unwrap() }; - // let branch = repo.find_branch(&self.branch, BranchType::Local).unwrap(); - //repo.branches(BranchType::Local).unwrap().find(|b| b.unwrap().na let repo = Repository::open(&self.path).unwrap(); { self._fetch_upstream(&repo, &self.branch); @@ -53,11 +51,8 @@ impl Page { repo.checkout_tree(&tree, Some(&mut checkout_options)) .unwrap(); - // repo.set_head(&format!("refs/heads/{}", &self.branch)) - // .unwrap(); repo.set_head(branch.get().name().unwrap()).unwrap(); - // } } repo } @@ -75,3 +70,35 @@ impl Page { self._fetch_upstream(&repo, branch); } } + +#[cfg(test)] +mod tests { + use super::*; + + use mktemp::Temp; + + #[actix_rt::test] + async fn pages_works() { + let tmp_dir = Temp::new_dir().unwrap(); + assert!(tmp_dir.exists(), "tmp directory successully created"); + let page = Page { + secret: String::default(), + repo: "https://github.com/mcaptcha/website".to_owned(), + path: tmp_dir.to_str().unwrap().to_string(), + branch: "gh-pages".to_string(), + }; + + assert!( + Repository::open(tmp_dir.as_path()).is_err(), + "repository doesn't exist yet" + ); + + let repo = page.create_repo(); + assert!(!repo.is_bare(), "repository isn't bare"); + page.create_repo(); + assert!( + Repository::open(tmp_dir.as_path()).is_ok(), + "repository exists yet" + ); + } +}