about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-06-16 12:43:35 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-06-16 12:43:35 +0300
commit0886bc4cbf3ec9b782b2dc9ed99ac6bed9df7b00 (patch)
tree3e42d61060947acce8e787506be6f31d33db734b
parent932ea641758e2fe20500151e80a4968cc0799078 (diff)
downloadrust-0886bc4cbf3ec9b782b2dc9ed99ac6bed9df7b00.tar.gz
rust-0886bc4cbf3ec9b782b2dc9ed99ac6bed9df7b00.zip
compiletest: Move pass mode update into a separate function
-rw-r--r--src/tools/compiletest/src/header.rs68
1 files changed, 36 insertions, 32 deletions
diff --git a/src/tools/compiletest/src/header.rs b/src/tools/compiletest/src/header.rs
index e4765c641aa..6ce7461f759 100644
--- a/src/tools/compiletest/src/header.rs
+++ b/src/tools/compiletest/src/header.rs
@@ -526,38 +526,7 @@ impl TestProps {
                 self.check_test_line_numbers_match = config.parse_check_test_line_numbers_match(ln);
             }
 
-            let check_no_run = |s| {
-                if config.mode != Mode::Ui && config.mode != Mode::Incremental {
-                    panic!("`{}` header is only supported in UI and incremental tests", s);
-                }
-                if config.mode == Mode::Incremental &&
-                   !cfg.map_or(false, |r| r.starts_with("cfail")) &&
-                   !self.revisions.iter().all(|r| r.starts_with("cfail")) {
-                    panic!("`{}` header is only supported in `cfail` incremental tests", s);
-                }
-            };
-            let pass_mode = if config.parse_name_directive(ln, "check-pass") {
-                check_no_run("check-pass");
-                Some(PassMode::Check)
-            } else if config.parse_name_directive(ln, "build-pass") {
-                check_no_run("build-pass");
-                Some(PassMode::Build)
-            } else if config.parse_name_directive(ln, "compile-pass") /* compatibility */ {
-                check_no_run("compile-pass");
-                Some(PassMode::Build)
-            } else if config.parse_name_directive(ln, "run-pass") {
-                if config.mode != Mode::Ui && config.mode != Mode::RunPass /* compatibility */ {
-                    panic!("`run-pass` header is only supported in UI tests")
-                }
-                Some(PassMode::Run)
-            } else {
-                None
-            };
-            match (self.pass_mode, pass_mode) {
-                (None, Some(_)) => self.pass_mode = pass_mode,
-                (Some(_), Some(_)) => panic!("multiple `*-pass` headers in a single test"),
-                (_, None) => {}
-            }
+            self.update_pass_mode(ln, cfg, config);
 
             if !self.disable_ui_testing_normalization {
                 self.disable_ui_testing_normalization =
@@ -604,6 +573,41 @@ impl TestProps {
             }
         }
     }
+
+    fn update_pass_mode(&mut self, ln: &str, revision: Option<&str>, config: &Config) {
+        let check_no_run = |s| {
+            if config.mode != Mode::Ui && config.mode != Mode::Incremental {
+                panic!("`{}` header is only supported in UI and incremental tests", s);
+            }
+            if config.mode == Mode::Incremental &&
+                !revision.map_or(false, |r| r.starts_with("cfail")) &&
+                !self.revisions.iter().all(|r| r.starts_with("cfail")) {
+                panic!("`{}` header is only supported in `cfail` incremental tests", s);
+            }
+        };
+        let pass_mode = if config.parse_name_directive(ln, "check-pass") {
+            check_no_run("check-pass");
+            Some(PassMode::Check)
+        } else if config.parse_name_directive(ln, "build-pass") {
+            check_no_run("build-pass");
+            Some(PassMode::Build)
+        } else if config.parse_name_directive(ln, "compile-pass") /* compatibility */ {
+            check_no_run("compile-pass");
+            Some(PassMode::Build)
+        } else if config.parse_name_directive(ln, "run-pass") {
+            if config.mode != Mode::Ui && config.mode != Mode::RunPass /* compatibility */ {
+                panic!("`run-pass` header is only supported in UI tests")
+            }
+            Some(PassMode::Run)
+        } else {
+            None
+        };
+        match (self.pass_mode, pass_mode) {
+            (None, Some(_)) => self.pass_mode = pass_mode,
+            (Some(_), Some(_)) => panic!("multiple `*-pass` headers in a single test"),
+            (_, None) => {}
+        }
+    }
 }
 
 fn iter_header(testfile: &Path, cfg: Option<&str>, it: &mut dyn FnMut(&str)) {