Skip to content

Revert "Revert "Add regression tests on optimise"" #3164

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Sep 26, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions compiler/test/dotc/comptest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ object comptest extends ParallelTesting {
def isInteractive = true
def testFilter = None

implicit val defaultOutputDir: String = "."

val posDir = "./tests/pos/"
val negDir = "./tests/neg/"
val dotcDir = "./src/dotty/"
Expand All @@ -26,6 +24,7 @@ object comptest extends ParallelTesting {
dotcDir + "tools/dotc/core/Types.scala",
dotcDir + "tools/dotc/ast/Trees.scala"
),
TestFlags("", Array("-Ylog:frontend", "-Xprompt"))
TestFlags("", Array("-Ylog:frontend", "-Xprompt")),
outDirectory = "."
)
}
17 changes: 10 additions & 7 deletions compiler/test/dotty/tools/dotc/CompilationTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import dotty.tools.io.JFile


class CompilationTests extends ParallelTesting {
import ParallelTesting._
import TestConfiguration._
import CompilationTests._

Expand Down Expand Up @@ -68,7 +69,6 @@ class CompilationTests extends ParallelTesting {
compileFilesInDir("../tests/pos-special/strawman-collections", defaultOptions) +
compileFile("../scala2-library/src/library/scala/collection/immutable/IndexedSeq.scala", defaultOptions) +
compileFile("../scala2-library/src/library/scala/collection/parallel/mutable/ParSetLike.scala", defaultOptions) +
compileFile("../tests/pos/t2171.scala", defaultOptimised) +
compileList(
"parSetSubset",
List(
Expand Down Expand Up @@ -159,6 +159,7 @@ class CompilationTests extends ParallelTesting {

@Test def compileNeg: Unit = {
compileShallowFilesInDir("../tests/neg", defaultOptions) +
compileShallowFilesInDir("../tests/neg/no-optimise", defaultOptions) +
compileFile("../tests/neg/customArgs/typers.scala", allowDoubleBindings) +
compileFile("../tests/neg/customArgs/overrideClass.scala", scala2Mode) +
compileFile("../tests/neg/customArgs/autoTuplingTest.scala", defaultOptions.and("-language:noAutoTupling")) +
Expand Down Expand Up @@ -186,12 +187,7 @@ class CompilationTests extends ParallelTesting {

@Test def runAll: Unit = {
compileFilesInDir("../tests/run", defaultOptions) +
compileFile("../tests/run/i3018.scala", defaultOptimised) +
compileFile("../tests/run/blame_eye_triple_eee-double.scala", defaultOptimised) +
compileFile("../tests/run/blame_eye_triple_eee-float.scala", defaultOptimised) +
compileFile("../tests/run/run-bug4840.scala", defaultOptimised) +
compileFile("../tests/run/optimizer-array-load.scala", defaultOptimised) +
compileFile("../tests/run/constant-optimization.scala", defaultOptimised)
compileFilesInDir("../tests/run-no-optimise", defaultOptions)
}.checkRuns()

// Pickling Tests ------------------------------------------------------------
Expand Down Expand Up @@ -298,6 +294,13 @@ class CompilationTests extends ParallelTesting {
tests.foreach(_.delete())
}

@Test def testOptimised: Unit = {
val outputDir = defaultOutputDir + "optimised/"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

outputDir is never used

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

supposed to be used in the tree lines bellow

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

compileFilesInDir("../tests/pos", defaultOptimised, outputDir).checkCompile()
compileFilesInDir("../tests/run", defaultOptimised, outputDir).checkRuns()
compileShallowFilesInDir("../tests/neg", defaultOptimised, outputDir).checkExpectedErrors()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we move each test in its corresponding test group (i.e. compilePos, compileNeg, runAll) to run them in parallel or should we keep them together for clarity?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would prefer to keep the separated for now because I going to start modifying stuff in the local optimizations. It will be clearer to see where the failures occurred if they happen. There are enough tests in each one to take advantage of parallelism, we can improve it later.

}

private val (compilerSources, backendSources, backendJvmSources) = {
val compilerDir = Paths.get("../compiler/src")
val compilerSources0 = sources(Files.walk(compilerDir))
Expand Down
1 change: 1 addition & 0 deletions compiler/test/dotty/tools/dotc/LinkOptimiseTests.scala
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import scala.concurrent.duration._
import scala.collection.JavaConverters._

class LinkOptimiseTests extends ParallelTesting {
import ParallelTesting._
import TestConfiguration._
import LinkOptimiseTests._

Expand Down
13 changes: 8 additions & 5 deletions compiler/test/dotty/tools/vulpix/ParallelTesting.scala
Original file line number Diff line number Diff line change
Expand Up @@ -1057,7 +1057,7 @@ trait ParallelTesting extends RunnerOrchestration { self =>
}

/** Compiles a single file from the string path `f` using the supplied flags */
def compileFile(f: String, flags: TestFlags)(implicit outDirectory: String): CompilationTest = {
def compileFile(f: String, flags: TestFlags, outDirectory: String = defaultOutputDir): CompilationTest = {
val callingMethod = getCallingMethod()
val sourceFile = new JFile(f)
val parent = sourceFile.getParentFile
Expand Down Expand Up @@ -1087,7 +1087,7 @@ trait ParallelTesting extends RunnerOrchestration { self =>
* By default, files are compiled in alphabetical order. An optional seed
* can be used for randomization.
*/
def compileDir(f: String, flags: TestFlags, randomOrder: Option[Int] = None)(implicit outDirectory: String): CompilationTest = {
def compileDir(f: String, flags: TestFlags, randomOrder: Option[Int] = None, outDirectory: String = defaultOutputDir): CompilationTest = {
val callingMethod = getCallingMethod()
val outDir = outDirectory + callingMethod + "/"
val sourceDir = new JFile(f)
Expand Down Expand Up @@ -1116,7 +1116,7 @@ trait ParallelTesting extends RunnerOrchestration { self =>
* `testName` since files can be in separate directories and or be otherwise
* dissociated
*/
def compileList(testName: String, files: List[String], flags: TestFlags, callingMethod: String = getCallingMethod())(implicit outDirectory: String): CompilationTest = {
def compileList(testName: String, files: List[String], flags: TestFlags, callingMethod: String = getCallingMethod(), outDirectory: String = defaultOutputDir): CompilationTest = {
val outDir = outDirectory + callingMethod + "/" + testName + "/"

// Directories in which to compile all containing files with `flags`:
Expand Down Expand Up @@ -1147,7 +1147,7 @@ trait ParallelTesting extends RunnerOrchestration { self =>
* - Directories can have an associated check-file, where the check file has
* the same name as the directory (with the file extension `.check`)
*/
def compileFilesInDir(f: String, flags: TestFlags)(implicit outDirectory: String): CompilationTest = {
def compileFilesInDir(f: String, flags: TestFlags, outDirectory: String = defaultOutputDir): CompilationTest = {
val callingMethod = getCallingMethod()
val outDir = outDirectory + callingMethod + "/"
val sourceDir = new JFile(f)
Expand All @@ -1167,7 +1167,7 @@ trait ParallelTesting extends RunnerOrchestration { self =>
* sub-directories and as such, does **not** perform separate compilation
* tests.
*/
def compileShallowFilesInDir(f: String, flags: TestFlags)(implicit outDirectory: String): CompilationTest = {
def compileShallowFilesInDir(f: String, flags: TestFlags, outDirectory: String = defaultOutputDir): CompilationTest = {
val callingMethod = getCallingMethod()
val outDir = outDirectory + callingMethod + "/"
val sourceDir = new JFile(f)
Expand All @@ -1185,6 +1185,9 @@ trait ParallelTesting extends RunnerOrchestration { self =>
}

object ParallelTesting {

def defaultOutputDir: String = "../out/"

def isSourceFile(f: JFile): Boolean = {
val name = f.getName
name.endsWith(".scala") || name.endsWith(".java")
Expand Down
1 change: 0 additions & 1 deletion compiler/test/dotty/tools/vulpix/TestConfiguration.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package tools
package vulpix

object TestConfiguration {
implicit val defaultOutputDir: String = "../out/"

val noCheckOptions = Array(
"-pagewidth", "120",
Expand Down
File renamed without changes.
File renamed without changes.