Skip to content

Commit 4c949a4

Browse files
committed
Simplify Error Handling.
1 parent ba22a69 commit 4c949a4

File tree

1 file changed

+21
-29
lines changed

1 file changed

+21
-29
lines changed

src/tools/jsondocck/src/main.rs

+21-29
Original file line numberDiff line numberDiff line change
@@ -197,22 +197,15 @@ fn check_command(command: Command, cache: &mut Cache) -> Result<(), CkError> {
197197
// @has <path> <jsonpath> = check path exists
198198
2 => {
199199
let val = cache.get_value(&command.args[0])?;
200-
201-
match select(&val, &command.args[1]) {
202-
Ok(results) => !results.is_empty(),
203-
Err(_) => false,
204-
}
200+
let results = select(&val, &command.args[1]).unwrap();
201+
!results.is_empty()
205202
}
206203
// @has <path> <jsonpath> <value> = check *any* item matched by path equals value
207204
3 => {
208205
let val = cache.get_value(&command.args[0])?;
209-
match select(&val, &command.args[1]) {
210-
Ok(results) => {
211-
let pat = string_to_value(&command.args[2], cache);
212-
results.contains(&pat.as_ref())
213-
}
214-
Err(_) => false,
215-
}
206+
let results = select(&val, &command.args[1]).unwrap();
207+
let pat = string_to_value(&command.args[2], cache);
208+
results.contains(&pat.as_ref())
216209
}
217210
_ => unreachable!(),
218211
}
@@ -223,38 +216,37 @@ fn check_command(command: Command, cache: &mut Cache) -> Result<(), CkError> {
223216
let expected: usize = command.args[2].parse().unwrap();
224217

225218
let val = cache.get_value(&command.args[0])?;
226-
match select(&val, &command.args[1]) {
227-
Ok(results) => results.len() == expected,
228-
Err(_) => false,
229-
}
219+
let results = select(&val, &command.args[1]).unwrap();
220+
results.len() == expected
230221
}
231222
CommandKind::Is => {
232223
// @has <path> <jsonpath> <value> = check *exactly one* item matched by path, and it equals value
233224
assert_eq!(command.args.len(), 3);
234225
let val = cache.get_value(&command.args[0])?;
235-
match select(&val, &command.args[1]) {
236-
Ok(results) => {
237-
let pat = string_to_value(&command.args[2], cache);
238-
results.len() == 1 && results[0] == pat.as_ref()
239-
}
240-
Err(_) => false,
241-
}
226+
let results = select(&val, &command.args[1]).unwrap();
227+
let pat = string_to_value(&command.args[2], cache);
228+
results.len() == 1 && results[0] == pat.as_ref()
242229
}
243-
// FIXME, Figure out semantics for @!set
244230
CommandKind::Set => {
245231
// @set <name> = <path> <jsonpath>
246232
assert_eq!(command.args.len(), 4);
247233
assert_eq!(command.args[1], "=", "Expected an `=`");
248234
let val = cache.get_value(&command.args[2])?;
249-
250-
match select(&val, &command.args[3]) {
251-
Ok(results) => {
252-
assert_eq!(results.len(), 1);
235+
let results = select(&val, &command.args[3]).unwrap();
236+
assert_eq!(results.len(), 1);
237+
match results.len() {
238+
0 => false,
239+
1 => {
253240
let r = cache.variables.insert(command.args[0].clone(), results[0].clone());
254241
assert!(r.is_none(), "Name collision: {} is duplicated", command.args[0]);
255242
true
256243
}
257-
Err(_) => false,
244+
_ => {
245+
panic!(
246+
"Got multiple results in `@set` for `{}`: {:?}",
247+
&command.args[3], results
248+
);
249+
}
258250
}
259251
}
260252
};

0 commit comments

Comments
 (0)