Skip to content

Commit d8ad68c

Browse files
committed
Produce an error if before or after field is not a table
1 parent 6b784be commit d8ad68c

File tree

1 file changed

+38
-2
lines changed

1 file changed

+38
-2
lines changed

src/book/mod.rs

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,13 @@ fn determine_preprocessors(config: &Config) -> Result<Vec<Box<dyn Preprocessor>>
401401
|| preprocessor_table.contains_key(name)
402402
};
403403

404-
if let Some(before) = table.get("before").and_then(Value::as_array) {
404+
if let Some(before) = table.get("before") {
405+
let before = before.as_array().ok_or_else(|| {
406+
Error::msg(format!(
407+
"Expected preprocessor.{}.before to be an array",
408+
name
409+
))
410+
})?;
405411
for after in before {
406412
let after = after.as_str().ok_or_else(|| {
407413
Error::msg(format!(
@@ -416,7 +422,13 @@ fn determine_preprocessors(config: &Config) -> Result<Vec<Box<dyn Preprocessor>>
416422
}
417423
}
418424

419-
if let Some(after) = table.get("after").and_then(Value::as_array) {
425+
if let Some(after) = table.get("after") {
426+
let after = after.as_array().ok_or_else(|| {
427+
Error::msg(format!(
428+
"Expected preprocessor.{}.after to be an array",
429+
name
430+
))
431+
})?;
420432
for before in after {
421433
let before = before.as_str().ok_or_else(|| {
422434
Error::msg(format!(
@@ -630,6 +642,30 @@ mod tests {
630642
assert_eq!(random, "python random.py");
631643
}
632644

645+
#[test]
646+
fn preprocessor_before_must_be_array() {
647+
let cfg_str = r#"
648+
[preprocessor.random]
649+
before = 0
650+
"#;
651+
652+
let cfg = Config::from_str(cfg_str).unwrap();
653+
654+
assert!(determine_preprocessors(&cfg).is_err());
655+
}
656+
657+
#[test]
658+
fn preprocessor_after_must_be_array() {
659+
let cfg_str = r#"
660+
[preprocessor.random]
661+
after = 0
662+
"#;
663+
664+
let cfg = Config::from_str(cfg_str).unwrap();
665+
666+
assert!(determine_preprocessors(&cfg).is_err());
667+
}
668+
633669
#[test]
634670
fn preprocessor_order_is_honored() {
635671
let cfg_str = r#"

0 commit comments

Comments
 (0)