diff --git a/src/config.rs b/src/config.rs index 6e9c995..f434421 100644 --- a/src/config.rs +++ b/src/config.rs @@ -184,9 +184,6 @@ impl Default for InjectedFieldConfig { impl Validate for InjectedFieldConfig { fn validate(&self) -> Result<()> { validate_field_name(&self.name)?; - if self.value.is_empty() { - bail!("'{}': value must not be empty", self.name); - } parse_typed_cell(&self.value, self.kind).with_context(|| format!("'{}'", self.name))?; Ok(()) } @@ -1212,6 +1209,24 @@ fields = [ ); } + #[test] + fn test_injected_field_accepts_empty_text_value() { + let dir = tempfile::tempdir().unwrap(); + let extra = "[[injected-fields]]\nname = \"note\"\ntype = \"TEXT\"\nvalue = \"\"\n"; + fs::write(dir.path().join("config.toml"), minimal_config_with(extra)).unwrap(); + let config = Config::load(dir.path()).unwrap(); + assert_eq!(config.injected_fields[0].value, ""); + } + + #[test] + fn test_injected_field_rejects_empty_number_value() { + let dir = tempfile::tempdir().unwrap(); + let extra = "[[injected-fields]]\nname = \"seq\"\ntype = \"NUMBER\"\nvalue = \"\"\n"; + fs::write(dir.path().join("config.toml"), minimal_config_with(extra)).unwrap(); + let err = Config::load(dir.path()).expect_err("expected validation error"); + assert!(format!("{:#}", err).contains("invalid number")); + } + fn minimal_config_with(extra: &str) -> String { format!( "{}\n[tables.users]\nfields = [\n {{ name = \"id\", type = \"NUMBER\", primary-key = true }},\n]\n", diff --git a/tests/accept_config.rs b/tests/accept_config.rs index 819f195..5111057 100644 --- a/tests/accept_config.rs +++ b/tests/accept_config.rs @@ -358,36 +358,6 @@ source = "users.csv" ); } -#[test] -fn test_injected_field_empty_value_rejected() { - common::init_logging(); - let tmp = tempfile::tempdir().unwrap(); - common::write_config( - tmp.path(), - "config.toml", - r#" -[[injected-fields]] -name = "host" -value = "" - -[tables.users] -fields = [ - { name = "id", type = "NUMBER", primary-key = true }, - { name = "name", type = "TEXT" }, -] - -[tables.users.csv] -source = "users.csv" -"#, - ); - - let err = format!("{:#}", Config::load(tmp.path()).unwrap_err()); - assert!( - err.contains("value must not be empty"), - "should report empty value: {err}" - ); -} - #[test] fn test_injected_field_value_does_not_parse() { common::init_logging();