Skip to content

Commit

Permalink
jsondocck: Improved error messages for invalid json value and failed @…
Browse files Browse the repository at this point in the history
…count check
  • Loading branch information
aDotInTheVoid committed Feb 9, 2022
1 parent 4e8fb74 commit 2d0bb0d
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions src/tools/jsondocck/src/main.rs
Expand Up @@ -231,7 +231,21 @@ fn check_command(command: Command, cache: &mut Cache) -> Result<(), CkError> {

let val = cache.get_value(&command.args[0])?;
let results = select(&val, &command.args[1]).unwrap();
results.len() == expected
let eq = results.len() == expected;
if !command.negated && !eq {
return Err(CkError::FailedCheck(
format!(
"`{}` matched to `{:?}` with length {}, but expected length {}",
&command.args[1],
results,
results.len(),
expected
),
command,
));
} else {
eq
}
}
CommandKind::Is => {
// @has <path> <jsonpath> <value> = check *exactly one* item matched by path, and it equals value
Expand Down Expand Up @@ -317,6 +331,6 @@ fn string_to_value<'a>(s: &str, cache: &'a Cache) -> Cow<'a, Value> {
panic!("No variable: `{}`. Current state: `{:?}`", &s[1..], cache.variables)
}))
} else {
Cow::Owned(serde_json::from_str(s).unwrap())
Cow::Owned(serde_json::from_str(s).expect(&format!("Cannot convert `{}` to json", s)))
}
}

0 comments on commit 2d0bb0d

Please sign in to comment.