Skip to content

Commit 845bb1c

Browse files
committed
Vulpix: Extract common code & drop unused suppressErrors
1 parent ee6d386 commit 845bb1c

File tree

1 file changed

+41
-50
lines changed

1 file changed

+41
-50
lines changed

compiler/test/dotty/tools/vulpix/ParallelTesting.scala

+41-50
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)