diff options
author | Olivier Blanvillain <olivier.blanvillain@gmail.com> | 2017-04-05 09:42:31 +0200 |
---|---|---|
committer | Olivier Blanvillain <olivier.blanvillain@gmail.com> | 2017-04-05 10:30:16 +0200 |
commit | f693ba744124940e3dc5ebfbf0f0c248c61a84d0 (patch) | |
tree | 138e04b905d2d86d2b670b959c51756bc297e742 /compiler/test/dotty/tools | |
parent | 42c2a6fbbddf73ef2faeb6204c2b7521a76d7345 (diff) | |
download | dotty-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')
-rw-r--r-- | compiler/test/dotty/tools/dotc/ParallelTesting.scala | 8 |
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) } |