aboutsummaryrefslogtreecommitdiff
path: root/compiler/test/dotty/tools/dotc
diff options
context:
space:
mode:
authorOlivier Blanvillain <olivier.blanvillain@gmail.com>2017-04-05 09:42:31 +0200
committerOlivier Blanvillain <olivier.blanvillain@gmail.com>2017-04-05 10:30:16 +0200
commitf693ba744124940e3dc5ebfbf0f0c248c61a84d0 (patch)
tree138e04b905d2d86d2b670b959c51756bc297e742 /compiler/test/dotty/tools/dotc
parent42c2a6fbbddf73ef2faeb6204c2b7521a76d7345 (diff)
downloaddotty-f693ba744124940e3dc5ebfbf0f0c248c61a84d0.tar.gz
dotty-f693ba744124940e3dc5ebfbf0f0c248c61a84d0.tar.bz2
dotty-f693ba744124940e3dc5ebfbf0f0c248c61a84d0.zip
Deterministically randomises test compilation order
The previous implementation would compile tests in different orders from machine to machine, depending on the order in which *.scala files are listed by the operating system.
Diffstat (limited to 'compiler/test/dotty/tools/dotc')
-rw-r--r--compiler/test/dotty/tools/dotc/ParallelTesting.scala8
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler/test/dotty/tools/dotc/ParallelTesting.scala b/compiler/test/dotty/tools/dotc/ParallelTesting.scala
index 2b20887e3..e5068dcd0 100644
--- a/compiler/test/dotty/tools/dotc/ParallelTesting.scala
+++ b/compiler/test/dotty/tools/dotc/ParallelTesting.scala
@@ -15,6 +15,7 @@ import scala.util.control.NonFatal
import scala.util.Try
import scala.collection.mutable
import scala.util.matching.Regex
+import scala.util.Random
import core.Contexts._
import reporting.{ Reporter, TestReporter }
@@ -1011,7 +1012,7 @@ trait ParallelTesting { self =>
* deep compilation, that is - it compiles all files and subdirectories
* contained within the directory `f`.
*/
- def compileDir(f: String, flags: Array[String])(implicit outDirectory: String): CompilationTest = {
+ def compileDir(f: String, flags: Array[String], seed: Int = 42)(implicit outDirectory: String): CompilationTest = {
val callingMethod = getCallingMethod
val outDir = outDirectory + callingMethod + "/"
val sourceDir = new JFile(f)
@@ -1021,11 +1022,14 @@ trait ParallelTesting { self =>
if (f.isDirectory) f.listFiles.flatMap(flatten)
else Array(f)
+ // Deterministically randomises compilation order
+ val files = new Random(seed).shuffle(flatten(sourceDir).toList).toArray
+
// Directories in which to compile all containing files with `flags`:
val targetDir = new JFile(outDir + "/" + sourceDir.getName + "/")
targetDir.mkdirs()
- val target = JointCompilationSource(callingMethod, flatten(sourceDir), flags, targetDir)
+ val target = JointCompilationSource(callingMethod, files, flags, targetDir)
new CompilationTest(target)
}