about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2021-05-28 17:12:58 +0200
committerGuillaume Gomez <guillaume1.gomez@gmail.com>2021-05-28 17:12:58 +0200
commitc755bbb36c939d8d3adc37cf044c65b5f597dc8c (patch)
treeb11febd1205f15af8903a6bd1bc4390f3c0820ec
parentfbf1b1a7193cda17008ab590e06ad28d9924023b (diff)
downloadrust-c755bbb36c939d8d3adc37cf044c65b5f597dc8c.tar.gz
rust-c755bbb36c939d8d3adc37cf044c65b5f597dc8c.zip
Add checks to ensure the error_codes checker is "clean"
-rw-r--r--src/tools/tidy/src/error_codes_check.rs16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/tools/tidy/src/error_codes_check.rs b/src/tools/tidy/src/error_codes_check.rs
index 55f824b63f2..02561b37bee 100644
--- a/src/tools/tidy/src/error_codes_check.rs
+++ b/src/tools/tidy/src/error_codes_check.rs
@@ -114,13 +114,18 @@ fn extract_error_codes(
                 .expect("failed to canonicalize error explanation file path");
             match read_to_string(&path) {
                 Ok(content) => {
-                    if !IGNORE_EXPLANATION_CHECK.contains(&err_code.as_str())
-                        && !check_if_error_code_is_test_in_explanation(&content, &err_code)
-                    {
+                    let has_test = check_if_error_code_is_test_in_explanation(&content, &err_code);
+                    if !has_test && !IGNORE_EXPLANATION_CHECK.contains(&err_code.as_str()) {
                         errors.push(format!(
                             "`{}` doesn't use its own error code in compile_fail example",
                             path.display(),
                         ));
+                    } else if has_test && IGNORE_EXPLANATION_CHECK.contains(&err_code.as_str()) {
+                        errors.push(format!(
+                            "`{}` has a compile_fail example with its own error code, it shouldn't \
+                             be listed in IGNORE_EXPLANATION_CHECK!",
+                            path.display(),
+                        ));
                     }
                     if check_error_code_explanation(&content, error_codes, err_code) {
                         errors.push(format!(
@@ -198,6 +203,11 @@ pub fn check(paths: &[&Path], bad: &mut bool) {
         for (err_code, nb) in &error_codes {
             if !*nb && !EXEMPTED_FROM_TEST.contains(&err_code.as_str()) {
                 errors.push(format!("Error code {} needs to have at least one UI test!", err_code));
+            } else if *nb && EXEMPTED_FROM_TEST.contains(&err_code.as_str()) {
+                errors.push(format!(
+                    "Error code {} has a UI test, it shouldn't be listed into EXEMPTED_FROM_TEST!",
+                    err_code
+                ));
             }
         }
     }