@@ -226,14 +226,14 @@ trait ParallelTesting extends RunnerOrchestration { self =>
226226 Try (testSource match {
227227 case testSource @ JointCompilationSource (name, files, flags, outDir, fromTasty, decompilation) =>
228228 val reporter =
229- if (fromTasty) compileFromTasty(flags, suppressErrors, outDir)
230- else compile(testSource.sourceFiles, flags, suppressErrors, outDir)
229+ if (fromTasty) compileFromTasty(flags, outDir)
230+ else compile(testSource.sourceFiles, flags, outDir)
231231 List (reporter)
232232
233233 case testSource @ SeparateCompilationSource (_, dir, flags, outDir) =>
234234 testSource.compilationGroups.map { (group, files) =>
235235 if group.compiler.isEmpty then
236- compile(files, flags, suppressErrors, outDir)
236+ compile(files, flags, outDir)
237237 else
238238 compileWithOtherCompiler(group.compiler, files, flags, outDir)
239239 }
@@ -469,7 +469,7 @@ trait ParallelTesting extends RunnerOrchestration { self =>
469469 registerCompletion()
470470 throw e
471471
472- protected def compile (files0 : Array [JFile ], flags0 : TestFlags , suppressErrors : Boolean , targetDir : JFile ): TestReporter = {
472+ protected def compile (files0 : Array [JFile ], flags0 : TestFlags , targetDir : JFile ): TestReporter = {
473473 import scala .util .Properties .*
474474
475475 def flattenFiles (f : JFile ): Array [JFile ] =
@@ -634,7 +634,7 @@ trait ParallelTesting extends RunnerOrchestration { self =>
634634
635635 reporter
636636
637- protected def compileFromTasty (flags0 : TestFlags , suppressErrors : Boolean , targetDir : JFile ): TestReporter = {
637+ protected def compileFromTasty (flags0 : TestFlags , targetDir : JFile ): TestReporter = {
638638 val tastyOutput = new JFile (targetDir.getPath + " _from-tasty" )
639639 tastyOutput.mkdir()
640640 val flags = flags0 and (" -d" , tastyOutput.getPath) and " -from-tasty"
@@ -653,6 +653,12 @@ trait ParallelTesting extends RunnerOrchestration { self =>
653653 private def mkLogLevel = if suppressErrors || suppressAllOutput then ERROR + 1 else ERROR
654654 private def mkReporter = TestReporter .reporter(realStdout, logLevel = mkLogLevel)
655655
656+ protected def diffCheckfile (testSource : TestSource , reporters : Seq [TestReporter ], logger : LoggedRunnable ) =
657+ checkFile(testSource).foreach(diffTest(testSource, _, reporterOutputLines(reporters), reporters, logger))
658+
659+ private def reporterOutputLines (reporters : Seq [TestReporter ]): List [String ] =
660+ reporters.flatMap(_.consoleOutput.split(" \n " )).toList
661+
656662 private [ParallelTesting ] def executeTestSuite (): this .type = {
657663 assert(testSourcesCompleted == 0 , " not allowed to re-use a `CompileRun`" )
658664 if filteredSources.nonEmpty then
@@ -808,10 +814,7 @@ trait ParallelTesting extends RunnerOrchestration { self =>
808814 end maybeFailureMessage
809815
810816 override def onSuccess (testSource : TestSource , reporters : Seq [TestReporter ], logger : LoggedRunnable ): Unit =
811- checkFile(testSource).foreach(diffTest(testSource, _, reporterOutputLines(reporters), reporters, logger))
812-
813- def reporterOutputLines (reporters : Seq [TestReporter ]): List [String ] =
814- reporters.flatMap(_.consoleOutput.split(" \n " )).toList
817+ diffCheckfile(testSource, reporters, logger)
815818
816819 // In neg-tests we allow two or three types of error annotations.
817820 // Normally, `// error` must be annotated on the correct line number.
@@ -1014,20 +1017,8 @@ trait ParallelTesting extends RunnerOrchestration { self =>
10141017 * compilation without generating errors and that they do not crash the
10151018 * compiler
10161019 */
1017- def checkCompile ()(implicit summaryReport : SummaryReporting ): this .type = {
1018- val test = new PosTest (targets, times, threadLimit, shouldFail || shouldSuppressOutput).executeTestSuite()
1019-
1020- cleanup()
1021-
1022- if (! shouldFail && test.didFail) {
1023- fail(s " Expected no errors when compiling, failed for the following reason(s): \n ${reasonsForFailure(test)}\n " )
1024- }
1025- else if (shouldFail && ! test.didFail && test.skipCount == 0 ) {
1026- fail(" Pos test should have failed, but didn't" )
1027- }
1028-
1029- this
1030- }
1020+ def checkCompile ()(implicit summaryReport : SummaryReporting ): this .type =
1021+ checkPass(new PosTest (targets, times, threadLimit, shouldFail || shouldSuppressOutput), " Pos" )
10311022
10321023 /** Creates a "neg" test run, which makes sure that each test generates the
10331024 * correct number of errors at the correct positions. It also makes sure
@@ -1047,35 +1038,16 @@ trait ParallelTesting extends RunnerOrchestration { self =>
10471038 end checkExpectedErrors
10481039
10491040 /** Creates a "fuzzy" test run, which makes sure that each test compiles (or not) without crashing */
1050- def checkNoCrash ()(implicit summaryReport : SummaryReporting ): this .type = {
1051- val test = new NoCrashTest (targets, times, threadLimit, shouldSuppressOutput).executeTestSuite()
1052-
1053- cleanup()
1054-
1055- if (test.didFail) {
1056- fail(" Fuzzy test shouldn't have crashed, but did" )
1057- }
1058-
1059- this
1060- }
1041+ def checkNoCrash ()(implicit summaryReport : SummaryReporting ): this .type =
1042+ checkFail(new NoCrashTest (targets, times, threadLimit, shouldSuppressOutput), " Fuzzy" )
10611043
10621044 /** Creates a "run" test run, which is a superset of "pos". In addition to
10631045 * making sure that all tests pass compilation and that they do not crash
10641046 * the compiler; it also makes sure that all tests can run with the
10651047 * expected output
10661048 */
1067- def checkRuns ()(implicit summaryReport : SummaryReporting ): this .type = {
1068- val test = new RunTest (targets, times, threadLimit, shouldFail || shouldSuppressOutput).executeTestSuite()
1069-
1070- cleanup()
1071-
1072- if ! shouldFail && test.didFail then
1073- fail(s " Run test failed, but should not, reasons: \n ${ reasonsForFailure(test) }" )
1074- else if shouldFail && ! test.didFail && test.skipCount == 0 then
1075- fail(" Run test should have failed, but did not" )
1076-
1077- this
1078- }
1049+ def checkRuns ()(implicit summaryReport : SummaryReporting ): this .type =
1050+ checkPass(new RunTest (targets, times, threadLimit, shouldFail || shouldSuppressOutput), " Run" )
10791051
10801052 /** Tests `-rewrite`, which makes sure that the rewritten files still compile
10811053 * and agree with the expected result (if specified).
@@ -1100,15 +1072,34 @@ trait ParallelTesting extends RunnerOrchestration { self =>
11001072 target.copy(dir = copyToDir(outDir, dir))
11011073 }
11021074
1103- val test = new RewriteTest (copiedTargets, checkFileMap, times, threadLimit, shouldFail || shouldSuppressOutput).executeTestSuite()
1075+ val test = new RewriteTest (copiedTargets, checkFileMap, times, threadLimit, shouldFail || shouldSuppressOutput)
1076+
1077+ checkFail(test, " Rewrite" )
1078+ }
1079+
1080+ private def checkPass (test : Test , desc : String ): this .type =
1081+ test.executeTestSuite()
11041082
11051083 cleanup()
11061084
1107- if test.didFail then
1108- fail(" Rewrite test failed" )
1085+ if ! shouldFail && test.didFail then
1086+ fail(s " $desc test failed, but should not, reasons: \n ${reasonsForFailure(test)}" )
1087+ else if shouldFail && ! test.didFail && test.skipCount == 0 then
1088+ fail(s " $desc test should have failed, but didn't " )
1089+
1090+ this
1091+
1092+ private def checkFail (test : Test , desc : String ): this .type =
1093+ test.executeTestSuite()
1094+
1095+ cleanup()
1096+
1097+ if shouldFail && ! test.didFail && test.skipCount == 0 then
1098+ fail(s " $desc test shouldn't have failed, but did. Reasons: \n ${reasonsForFailure(test)}" )
1099+ else if ! shouldFail && test.didFail then
1100+ fail(s " $desc test failed " )
11091101
11101102 this
1111- }
11121103
11131104 /** Deletes output directories and files */
11141105 private def cleanup (): this .type = {
0 commit comments