From ddb1a2afb7c2e5d20d7ae738ef9c27feb54972e3 Mon Sep 17 00:00:00 2001 From: "Felix S. Klock II" Date: Fri, 14 Sep 2018 11:42:32 +0200 Subject: [PATCH] Make `src/test/run-pass/` act like an alternative `ui` test suite. --- src/tools/compiletest/src/runtest.rs | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index 2d49c83edb9..3c18f9bd7c3 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -247,7 +247,6 @@ fn run_revision(&self) { match self.config.mode { CompileFail | ParseFail => self.run_cfail_test(), RunFail => self.run_rfail_test(), - RunPass => self.run_rpass_test(), RunPassValgrind => self.run_valgrind_test(), Pretty => self.run_pretty_test(), DebugInfoGdb => self.run_debuginfo_gdb_test(), @@ -257,13 +256,30 @@ fn run_revision(&self) { CodegenUnits => self.run_codegen_units_test(), Incremental => self.run_incremental_test(), RunMake => self.run_rmake_test(), - Ui => self.run_ui_test(), + RunPass | Ui => self.run_ui_test(), MirOpt => self.run_mir_opt_test(), } } + fn should_run_successfully(&self) -> bool { + match self.config.mode { + RunPass => true, + Ui => self.props.run_pass, + _ => unimplemented!(), + } + } + + fn should_compile_successfully(&self) -> bool { + match self.config.mode { + CompileFail => false, + RunPass => true, + Ui => self.props.compile_pass, + mode => panic!("unimplemented for mode {:?}", mode), + } + } + fn check_if_test_should_compile(&self, proc_res: &ProcRes) { - if self.props.compile_pass { + if self.should_compile_successfully() { if !proc_res.status.success() { self.fatal_proc_rec("test compilation failed although it shouldn't!", proc_res); } @@ -1677,7 +1693,7 @@ fn make_compile_args(&self, input_file: &Path, output_file: TargetLocation) -> C rustc.arg("-Zui-testing"); } } - Ui => { + RunPass | Ui => { if !self .props .compile_flags @@ -1706,7 +1722,7 @@ fn make_compile_args(&self, input_file: &Path, output_file: TargetLocation) -> C rustc.arg(dir_opt); } - RunPass | RunFail | RunPassValgrind | Pretty | DebugInfoGdb | DebugInfoLldb + RunFail | RunPassValgrind | Pretty | DebugInfoGdb | DebugInfoLldb | Codegen | Rustdoc | RunMake | CodegenUnits => { // do not use JSON output } @@ -2691,7 +2707,7 @@ fn run_ui_test(&self) { let expected_errors = errors::load_errors(&self.testpaths.file, self.revision); - if self.props.run_pass { + if self.should_run_successfully() { let proc_res = self.exec_compiled_test(); if !proc_res.status.success() { -- 2.44.0