about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNixon Enraght-Moony <nixon.emoony@gmail.com>2021-02-26 22:55:28 +0000
committerNixon Enraght-Moony <nixon.emoony@gmail.com>2021-03-10 22:06:05 +0000
commit5f24798b9e228438973a8abeee1a2d5ea016f335 (patch)
treed6dc7d77e8e3035dd9940c4899d3716acce3e981
parent9925ecb3928417b4401e81a2a7cde6de114aa26f (diff)
downloadrust-5f24798b9e228438973a8abeee1a2d5ea016f335.tar.gz
rust-5f24798b9e228438973a8abeee1a2d5ea016f335.zip
Improve some jsondocck errors
-rw-r--r--src/tools/jsondocck/src/main.rs24
1 files 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 => {