summaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/src')
-rw-r--r--server/src/git.rs22
-rw-r--r--server/src/tests.rs19
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)