Handle blank input a little more cleanly
This commit is contained in:
parent
03de4a4661
commit
4647226ee7
1 changed files with 18 additions and 6 deletions
|
|
@ -105,8 +105,14 @@ impl JsonValue {
|
||||||
pub fn parse(blob: &[u8]) -> Result<Self> {
|
pub fn parse(blob: &[u8]) -> Result<Self> {
|
||||||
Self::parse_impl(blob).with_context(|| {
|
Self::parse_impl(blob).with_context(|| {
|
||||||
match std::str::from_utf8(blob) {
|
match std::str::from_utf8(blob) {
|
||||||
Ok(s) => format!("Failed to parse: {s}"),
|
Ok(s) => format!("Failed to parse {} bytes: '{}'", s.len(), s),
|
||||||
Err(_) => format!("Failed to parse {blob:?}"),
|
Err(_) => {
|
||||||
|
format!(
|
||||||
|
"Failed to parse {} bytes (not utf-8): {:?}",
|
||||||
|
blob.len(),
|
||||||
|
blob
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -295,10 +301,11 @@ impl JsonValue {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
match stack.pop().expect("underflow somehow") {
|
match stack.pop() {
|
||||||
Tok::Val(v) => Ok(v),
|
Some(Tok::Val(v)) => Ok(v),
|
||||||
Tok::StartObject => bail!("unterminated object"),
|
Some(Tok::StartObject) => bail!("unterminated object"),
|
||||||
Tok::StartArray => bail!("unterminated array"),
|
Some(Tok::StartArray) => bail!("unterminated array"),
|
||||||
|
None => bail!("No JSON found in input"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -501,6 +508,11 @@ mod test {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
pub fn json_decode_empty() {
|
||||||
|
assert!(JsonValue::parse(b" ").is_err());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
pub fn json_decode_docker() {
|
pub fn json_decode_docker() {
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue