diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2025-01-26 22:21:29 +0100 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2025-01-26 22:21:29 +0100 |
| commit | 790e1af298aa7c9f39fb7cfe15615307ed87d597 (patch) | |
| tree | ee911ccc4b3681462175f7a49224e44c9acd8070 /server/src | |
| parent | 5807838b553bb8e3add15025925d5c60afd56cfc (diff) | |
Fix tests after adding git repos
Use testdir to create directories to put test git in.
Use custom test method to find githook binary.
Stop using remote so that git repo doesn't try to fetch.
Diffstat (limited to 'server/src')
| -rw-r--r-- | server/src/git.rs | 22 | ||||
| -rw-r--r-- | server/src/tests.rs | 19 |
2 files changed, 30 insertions, 11 deletions
diff --git a/server/src/git.rs b/server/src/git.rs index 652eb29..9fb0593 100644 --- a/server/src/git.rs +++ b/server/src/git.rs @@ -117,10 +117,7 @@ impl RepoData { } async fn sync_hooks(&mut self, repo: &Repository) -> Result<(), Error> { - let server_exe = - std::env::current_exe().map_err(|e| io_err("unable to get current exe", e))?; - - let hook = server_exe.parent().unwrap().join("eyeballs-githook"); + let hook = get_githook_bin()?; let hooks = if repo.is_bare() { repo.path().join("hooks") @@ -449,3 +446,20 @@ impl Repository { .await } } + +#[cfg(not(test))] +fn get_githook_bin() -> Result<PathBuf, Error> { + let server_exe = std::env::current_exe().map_err(|e| io_err("unable to get current exe", e))?; + Ok(server_exe.parent().unwrap().join("eyeballs-githook")) +} + +#[cfg(test)] +fn get_githook_bin() -> Result<PathBuf, Error> { + let test_exe = std::env::current_exe().map_err(|e| io_err("unable to get current exe", e))?; + Ok(test_exe + .parent() + .unwrap() + .parent() + .unwrap() + .join("eyeballs-githook")) +} diff --git a/server/src/tests.rs b/server/src/tests.rs index b96a5b3..f1489d8 100644 --- a/server/src/tests.rs +++ b/server/src/tests.rs @@ -7,6 +7,7 @@ use sqlx::{Acquire, Executor, Pool}; use std::fmt::Display; use std::sync::OnceLock; use stdext::function_name; +use testdir::testdir; use crate::api_model; @@ -114,7 +115,11 @@ async fn async_client_with_private_database(test_name: String) -> Client { "url" => db_url.into(), }; - let figment = base_figment.merge(("databases", map!["eyeballs" => db_config])); + let git_root = testdir!(); + + let figment = base_figment + .merge(("databases", map!["eyeballs" => db_config])) + .merge(("git_server_root", git_root)); Client::tracked(crate::rocket_from_config(figment)) .await @@ -185,7 +190,7 @@ async fn new_project(client: &Client) -> api_model::Project { .json(&api_model::ProjectData { title: Some("foo"), description: Some("bar"), - remote: Some("fum"), + remote: None, main_branch: Some("zod"), }), ) @@ -296,7 +301,7 @@ async fn test_project_new() { assert_eq!(project.id, "test"); assert_eq!(project.title, "foo"); assert_eq!(project.description, "bar"); - assert_eq!(project.remote, "fum"); + assert_eq!(project.remote, ""); assert_eq!(project.main_branch, "zod"); assert_eq!(project.users.len(), 1); let user = project.users.get(0).unwrap(); @@ -329,7 +334,7 @@ async fn test_project_new_duplicate() { .json(&api_model::ProjectData { title: Some("foo"), description: Some("bar"), - remote: Some("fum"), + remote: None, main_branch: Some("zod"), }) .header(&FAKE_IP) @@ -351,8 +356,8 @@ async fn test_project_update() { &api_model::ProjectData { title: Some("foo"), description: None, - remote: Some("fum"), - main_branch: None, + remote: None, + main_branch: Some("fum"), }, )) .await; @@ -390,7 +395,7 @@ async fn test_project_update_unknown() { .json(&api_model::ProjectData { title: Some("foo"), description: Some("bar"), - remote: Some("fum"), + remote: None, main_branch: Some("zod"), }) .header(&FAKE_IP) |
