summaryrefslogtreecommitdiff
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
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.
-rw-r--r--server/Cargo.lock163
-rw-r--r--server/Cargo.toml1
-rw-r--r--server/src/git.rs22
-rw-r--r--server/src/tests.rs19
4 files changed, 194 insertions, 11 deletions
diff --git a/server/Cargo.lock b/server/Cargo.lock
index 7ddcc26..144958f 100644
--- a/server/Cargo.lock
+++ b/server/Cargo.lock
@@ -81,6 +81,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
[[package]]
+name = "anyhow"
+version = "1.0.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04"
+
+[[package]]
name = "arbitrary"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -234,6 +240,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b"
[[package]]
+name = "camino"
+version = "1.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo-platform"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo_metadata"
+version = "0.14.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa"
+dependencies = [
+ "camino",
+ "cargo-platform",
+ "semver",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
name = "cc"
version = "1.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -522,6 +559,7 @@ dependencies = [
"serde",
"sqlx",
"stdext",
+ "testdir",
"time",
"tokio",
"users",
@@ -1106,6 +1144,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
[[package]]
+name = "js-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
name = "lazy_static"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1334,6 +1382,15 @@ dependencies = [
]
[[package]]
+name = "ntapi"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
name = "nu-ansi-term"
version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2070,6 +2127,15 @@ dependencies = [
]
[[package]]
+name = "semver"
+version = "1.0.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03"
+dependencies = [
+ "serde",
+]
+
+[[package]]
name = "serde"
version = "1.0.217"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2501,6 +2567,20 @@ dependencies = [
]
[[package]]
+name = "sysinfo"
+version = "0.26.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c18a6156d1f27a9592ee18c1a846ca8dd5c258b7179fc193ae87c74ebb666f5"
+dependencies = [
+ "cfg-if",
+ "core-foundation-sys",
+ "libc",
+ "ntapi",
+ "once_cell",
+ "winapi",
+]
+
+[[package]]
name = "tempfile"
version = "3.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2515,6 +2595,21 @@ dependencies = [
]
[[package]]
+name = "testdir"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9ffa013be124f7e8e648876190de818e3a87088ed97ccd414a398b403aec8c8"
+dependencies = [
+ "anyhow",
+ "backtrace",
+ "cargo-platform",
+ "cargo_metadata",
+ "once_cell",
+ "sysinfo",
+ "whoami",
+]
+
+[[package]]
name = "thiserror"
version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3019,6 +3114,73 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b"
[[package]]
+name = "wasm-bindgen"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6"
+dependencies = [
+ "bumpalo",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.95",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.95",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
name = "webpki-roots"
version = "0.25.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3032,6 +3194,7 @@ checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d"
dependencies = [
"redox_syscall",
"wasite",
+ "web-sys",
]
[[package]]
diff --git a/server/Cargo.toml b/server/Cargo.toml
index 3fb7bab..8ce6668 100644
--- a/server/Cargo.toml
+++ b/server/Cargo.toml
@@ -21,6 +21,7 @@ utoipa-swagger-ui = { version = "8", features = ["rocket", "vendored"], default-
[dev-dependencies]
stdext = "0.3.3"
+testdir = "0.9.3"
[[bin]]
name = "eyeballs-githook"
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)