From 5f24798b9e228438973a8abeee1a2d5ea016f335 Mon Sep 17 00:00:00 2001 From: Nixon Enraght-Moony Date: Fri, 26 Feb 2021 22:55:28 +0000 Subject: [PATCH] Improve some jsondocck errors --- src/tools/jsondocck/src/main.rs | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/tools/jsondocck/src/main.rs b/src/tools/jsondocck/src/main.rs index 5020a4917a0..bcb3f6922ef 100644 --- a/src/tools/jsondocck/src/main.rs +++ b/src/tools/jsondocck/src/main.rs @@ -205,7 +205,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(); let pat = string_to_value(&command.args[2], cache); - results.contains(&pat.as_ref()) + let has = results.contains(&pat.as_ref()); + // Give better error for when @has check fails + if !command.negated && !has { + return Err(CkError::FailedCheck( + format!( + "{} matched to {:?} but didn't have {:?}", + &command.args[1], + results, + pat.as_ref() + ), + command, + )); + } else { + has + } } _ => unreachable!(), } @@ -233,7 +247,13 @@ fn check_command(command: Command, cache: &mut Cache) -> Result<(), CkError> { assert_eq!(command.args[1], "=", "Expected an `=`"); let val = cache.get_value(&command.args[2])?; let results = select(&val, &command.args[3]).unwrap(); - assert_eq!(results.len(), 1); + assert_eq!( + results.len(), + 1, + "Didn't get 1 result for `{}`: got {:?}", + command.args[3], + results + ); match results.len() { 0 => false, 1 => {