diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/Cargo.lock | 163 | ||||
| -rw-r--r-- | server/Cargo.toml | 1 | ||||
| -rw-r--r-- | server/src/git.rs | 22 | ||||
| -rw-r--r-- | server/src/tests.rs | 19 |
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) |
