summaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2025-01-26 22:21:29 +0100
committerJoel Klinghed <the_jk@spawned.biz>2025-01-26 22:21:29 +0100
commit790e1af298aa7c9f39fb7cfe15615307ed87d597 (patch)
treeee911ccc4b3681462175f7a49224e44c9acd8070 /server/src
parent5807838b553bb8e3add15025925d5c60afd56cfc (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.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)