diff options
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) |
