diff --git a/src/server/config/mod.rs b/src/server/config/mod.rs index 6716594..21b948f 100644 --- a/src/server/config/mod.rs +++ b/src/server/config/mod.rs @@ -392,142 +392,5 @@ impl Display for ForgeType { } } -#[cfg(feature = "forgejo")] #[cfg(test)] -mod tests { - - use pretty_assertions::assert_eq; - - use crate::filesystem::FileSystem; - - use super::*; - - #[test] - fn load_should_parse_server_config() -> Result<(), OneOf<(std::io::Error, toml::de::Error)>> { - let fs = FileSystem::new_temp().map_err(OneOf::new)?; - fs.write_file( - "git-next-server.toml", - r#" - [webhook] - url = "http://localhost:9909/webhook" - - [storage] - path = "/opt/git-next/data" - - [forge.default] - forge_type = "MockForge" - hostname = "git.example.net" - user = "Bob" - token = "API-Token" - - [forge.default.repos] - hello = { repo = "user/hello", branch = "main", gitdir = "/opt/git/user/hello.git" } - world = { repo = "user/world", branch = "master", main = "main", next = "next", dev = "dev" } - - [forge.default.repos.sam] - repo = "user/sam" - branch = "main" - main = "master" - next = "upcoming" - dev = "sam-dev" - "#, - ) - .map_err(OneOf::new)?; - let config = ServerConfig::load(&fs)?; - let expected = ServerConfig { - webhook: Webhook { - url: "http://localhost:9909/webhook".to_string(), - }, - storage: ServerStorage { - path: "/opt/git-next/data".into(), - }, - forge: HashMap::from([( - "default".to_string(), - ForgeConfig { - forge_type: ForgeType::MockForge, - hostname: "git.example.net".to_string(), - user: "Bob".to_string(), - token: "API-Token".to_string(), - repos: HashMap::from([ - ( - "hello".to_string(), - ServerRepoConfig { - repo: "user/hello".to_string(), - branch: "main".to_string(), - gitdir: Some("/opt/git/user/hello.git".into()), - main: None, - next: None, - dev: None, - }, - ), - ( - "world".to_string(), - ServerRepoConfig { - repo: "user/world".to_string(), - branch: "master".to_string(), - gitdir: None, - main: Some("main".to_string()), - next: Some("next".to_string()), - dev: Some("dev".to_string()), - }, - ), - ( - "sam".to_string(), - ServerRepoConfig { - repo: "user/sam".to_string(), - branch: "main".to_string(), - gitdir: None, - main: Some("master".to_string()), - next: Some("upcoming".to_string()), - dev: Some("sam-dev".to_string()), - }, - ), - ]), - }, - )]), - }; - assert_eq!(config, expected, "ServerConfig"); - - if let Some(forge) = config.forge.get("world") { - if let Some(repo) = forge.repos.get("sam") { - let repo_config = repo.repo_config(); - let expected = Some(RepoConfig { - branches: RepoBranches { - main: "master".to_string(), - next: "upcoming".to_string(), - dev: "sam-dev".to_string(), - }, - }); - assert_eq!(repo_config, expected, "RepoConfig"); - } - } - - Ok(()) - } - - #[test] - fn test_repo_config_load() -> Result<(), OneOf<(toml::de::Error,)>> { - let toml = r#" - [branches] - main = "main" - next = "next" - dev = "dev" - - [options] - "#; - let config = RepoConfig::load(toml)?; - - assert_eq!( - config, - RepoConfig { - branches: RepoBranches { - main: "main".to_string(), - next: "next".to_string(), - dev: "dev".to_string(), - }, - } - ); - - Ok(()) - } -} +mod tests; diff --git a/src/server/config/tests.rs b/src/server/config/tests.rs new file mode 100644 index 0000000..4264c68 --- /dev/null +++ b/src/server/config/tests.rs @@ -0,0 +1,134 @@ +use pretty_assertions::assert_eq; + +use crate::filesystem::FileSystem; + +use super::*; + +#[test] +fn load_should_parse_server_config() -> Result<(), OneOf<(std::io::Error, toml::de::Error)>> { + let fs = FileSystem::new_temp().map_err(OneOf::new)?; + fs.write_file( + "git-next-server.toml", + r#" + [webhook] + url = "http://localhost:9909/webhook" + + [storage] + path = "/opt/git-next/data" + + [forge.default] + forge_type = "MockForge" + hostname = "git.example.net" + user = "Bob" + token = "API-Token" + + [forge.default.repos] + hello = { repo = "user/hello", branch = "main", gitdir = "/opt/git/user/hello.git" } + world = { repo = "user/world", branch = "master", main = "main", next = "next", dev = "dev" } + + [forge.default.repos.sam] + repo = "user/sam" + branch = "main" + main = "master" + next = "upcoming" + dev = "sam-dev" + "#, + ) + .map_err(OneOf::new)?; + let config = ServerConfig::load(&fs)?; + let expected = ServerConfig { + webhook: Webhook { + url: "http://localhost:9909/webhook".to_string(), + }, + storage: ServerStorage { + path: "/opt/git-next/data".into(), + }, + forge: HashMap::from([( + "default".to_string(), + ForgeConfig { + forge_type: ForgeType::MockForge, + hostname: "git.example.net".to_string(), + user: "Bob".to_string(), + token: "API-Token".to_string(), + repos: HashMap::from([ + ( + "hello".to_string(), + ServerRepoConfig { + repo: "user/hello".to_string(), + branch: "main".to_string(), + gitdir: Some("/opt/git/user/hello.git".into()), + main: None, + next: None, + dev: None, + }, + ), + ( + "world".to_string(), + ServerRepoConfig { + repo: "user/world".to_string(), + branch: "master".to_string(), + gitdir: None, + main: Some("main".to_string()), + next: Some("next".to_string()), + dev: Some("dev".to_string()), + }, + ), + ( + "sam".to_string(), + ServerRepoConfig { + repo: "user/sam".to_string(), + branch: "main".to_string(), + gitdir: None, + main: Some("master".to_string()), + next: Some("upcoming".to_string()), + dev: Some("sam-dev".to_string()), + }, + ), + ]), + }, + )]), + }; + assert_eq!(config, expected, "ServerConfig"); + + if let Some(forge) = config.forge.get("world") { + if let Some(repo) = forge.repos.get("sam") { + let repo_config = repo.repo_config(); + let expected = Some(RepoConfig { + branches: RepoBranches { + main: "master".to_string(), + next: "upcoming".to_string(), + dev: "sam-dev".to_string(), + }, + }); + assert_eq!(repo_config, expected, "RepoConfig"); + } + } + + Ok(()) +} + +#[test] +fn test_repo_config_load() -> Result<(), OneOf<(toml::de::Error,)>> { + let toml = r#" + [branches] + main = "main" + next = "next" + dev = "dev" + + [options] + "#; + let config = RepoConfig::load(toml)?; + + assert_eq!( + config, + RepoConfig { + branches: RepoBranches { + main: "main".to_string(), + next: "next".to_string(), + dev: "dev".to_string(), + }, + } + ); + + Ok(()) +}