diff --git a/Cargo.lock b/Cargo.lock index 1370ca03..10331fbf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1952,7 +1952,6 @@ checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3" dependencies = [ "atomic", "parking_lot", - "pear", "serde", "tempfile", "toml", @@ -2775,12 +2774,6 @@ dependencies = [ "sqlx", ] -[[package]] -name = "inlinable_string" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" - [[package]] name = "inout" version = "0.1.4" @@ -3700,29 +3693,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" -[[package]] -name = "pear" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467" -dependencies = [ - "inlinable_string", - "pear_codegen", - "yansi", -] - -[[package]] -name = "pear_codegen" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147" -dependencies = [ - "proc-macro2", - "proc-macro2-diagnostics", - "quote", - "syn 2.0.117", -] - [[package]] name = "pem" version = "3.0.6" @@ -4084,19 +4054,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "proc-macro2-diagnostics" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", - "version_check", - "yansi", -] - [[package]] name = "profiling" version = "1.0.18" @@ -7244,12 +7201,6 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" -[[package]] -name = "yansi" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" - [[package]] name = "yoke" version = "0.8.2" diff --git a/Cargo.toml b/Cargo.toml index 7bbd3f0c..49ec33ba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -64,7 +64,7 @@ hex = "0.4" object_store = { version = "0.11", features = ["aws"] } axum = { version = "0.8.8", features = ["macros", "multipart"] } csv = "1" -figment = { version = "0.10", features = ["toml", "env"] } +figment = { version = "0.10", features = ["toml"] } api-types = { path = "crates/api-types" } domain = { path = "crates/domain" } diff --git a/crates/config/src/loader.rs b/crates/config/src/loader.rs index e0fc448b..250404f6 100644 --- a/crates/config/src/loader.rs +++ b/crates/config/src/loader.rs @@ -98,6 +98,9 @@ pub fn load() -> Result { let figment = Figment::new().merge(Toml::file(path)).merge(LegacyEnv); + figment + .data() + .map_err(|e| ConfigError::Unreadable(Box::new(e)))?; if figment.find_value("database.url").is_err() { return Err(ConfigError::Missing("DATABASE_URL")); } diff --git a/crates/config/tests/loader_test.rs b/crates/config/tests/loader_test.rs index 88d984ad..58f8d11f 100644 --- a/crates/config/tests/loader_test.rs +++ b/crates/config/tests/loader_test.rs @@ -377,3 +377,15 @@ fn secure_cookies_and_image_conversion_accept_true_only() { Ok(()) }); } + +#[test] +fn malformed_config_file_reports_the_file_not_a_missing_database_url() { + Jail::expect_with(|jail| { + jail_with(jail, &[]); + jail.create_file("config.toml", "[server\nport = = 1\n")?; + let err = load().expect_err("config.toml is malformed"); + assert!(matches!(err, ConfigError::Unreadable(_)), "{err}"); + assert!(!err.to_string().contains("DATABASE_URL"), "{err}"); + Ok(()) + }); +}