Skip to content

Commit ac45e12

Browse files
committed
Merge pull request #54 from odersky/Improve/better-tests
Improve test infrastructure
2 parents 0787390 + e1ec7ed commit ac45e12

File tree

4 files changed

+64
-308
lines changed

4 files changed

+64
-308
lines changed

src/dotty/tools/dotc/core/Constraint.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import collection.mutable
88
import printing.{Printer, Showable}
99
import printing.Texts._
1010
import config.Config
11+
import config.Printers._
1112

1213
/** Constraint over undetermined type parameters
1314
* @param myMap a map from PolyType to arrays.
@@ -304,5 +305,5 @@ trait ConstraintRunInfo { self: RunInfo =>
304305
maxConstraint = c
305306
}
306307
def printMaxConstraint()(implicit ctx: Context) =
307-
if (maxSize > 0) println(s"max constraint = ${maxConstraint.show}")
308+
if (maxSize > 0) typr.println(s"max constraint = ${maxConstraint.show}")
308309
}

test/dotc/tests.scala

+46-41
Original file line numberDiff line numberDiff line change
@@ -12,36 +12,39 @@ class tests extends CompilerTest {
1212
// "-Xprompt",
1313
// "-explaintypes",
1414
// "-Yshow-suppressed-errors",
15-
"#runs", "2",
16-
"-pagewidth", "160")
15+
"-pagewidth", "160"
16+
)
17+
val twice = List("#runs", "2")
1718

1819
val posDir = "./tests/pos/"
1920
val negDir = "./tests/neg/"
2021
val dotcDir = "./src/dotty/"
21-
22-
@Test def pos_Coder() = compileFile(posDir, "Coder")
23-
@Test def pos_blockescapes() = compileFile(posDir, "blockescapes")
24-
@Test def pos_collections() = compileFile(posDir, "collections")
25-
@Test def pos_functions1() = compileFile(posDir, "functions1")
26-
@Test def pos_implicits1() = compileFile(posDir, "implicits1")
27-
@Test def pos_inferred() = compileFile(posDir, "inferred")
28-
@Test def pos_Patterns() = compileFile(posDir, "Patterns")
29-
@Test def pos_selftypes() = compileFile(posDir, "selftypes")
30-
@Test def pos_varargs() = compileFile(posDir, "varargs")
31-
@Test def pos_opassign() = compileFile(posDir, "opassign")
32-
@Test def pos_typedapply() = compileFile(posDir, "typedapply")
33-
@Test def pos_nameddefaults() = compileFile(posDir, "nameddefaults")
34-
@Test def pos_desugar() = compileFile(posDir, "desugar")
35-
@Test def pos_sigs() = compileFile(posDir, "sigs")
36-
@Test def pos_typers() = compileFile(posDir, "typers")
37-
@Test def pos_typedidents() = compileFile(posDir, "typedIdents")
38-
@Test def pos_assignments() = compileFile(posDir, "assignments")
39-
@Test def pos_packageobject() = compileFile(posDir, "packageobject")
40-
@Test def pos_overloaded() = compileFile(posDir, "overloaded")
41-
@Test def pos_templateParents() = compileFile(posDir, "templateParents")
42-
@Test def pos_structural() = compileFile(posDir, "structural")
43-
@Test def pos_i39 = compileFile(posDir, "i39")
44-
@Test def pos_overloadedAccess = compileFile(posDir, "overloadedAccess")
22+
/*
23+
@Test def pos_Coder() = compileFile(posDir, "Coder", twice)
24+
@Test def pos_blockescapes() = compileFile(posDir, "blockescapes", twice)
25+
@Test def pos_collections() = compileFile(posDir, "collections", twice)
26+
@Test def pos_functions1() = compileFile(posDir, "functions1", twice)
27+
@Test def pos_implicits1() = compileFile(posDir, "implicits1", twice)
28+
@Test def pos_inferred() = compileFile(posDir, "inferred", twice)
29+
@Test def pos_Patterns() = compileFile(posDir, "Patterns", twice)
30+
@Test def pos_selftypes() = compileFile(posDir, "selftypes", twice)
31+
@Test def pos_varargs() = compileFile(posDir, "varargs", twice)
32+
@Test def pos_opassign() = compileFile(posDir, "opassign", twice)
33+
@Test def pos_typedapply() = compileFile(posDir, "typedapply", twice)
34+
@Test def pos_nameddefaults() = compileFile(posDir, "nameddefaults", twice)
35+
@Test def pos_desugar() = compileFile(posDir, "desugar", twice)
36+
@Test def pos_sigs() = compileFile(posDir, "sigs", twice)
37+
@Test def pos_typers() = compileFile(posDir, "typers", twice)
38+
@Test def pos_typedidents() = compileFile(posDir, "typedIdents", twice)
39+
@Test def pos_assignments() = compileFile(posDir, "assignments", twice)
40+
@Test def pos_packageobject() = compileFile(posDir, "packageobject", twice)
41+
@Test def pos_overloaded() = compileFile(posDir, "overloaded", twice)
42+
@Test def pos_templateParents() = compileFile(posDir, "templateParents", twice)
43+
@Test def pos_structural() = compileFile(posDir, "structural", twice)
44+
@Test def pos_i39 = compileFile(posDir, "i39", twice)
45+
@Test def pos_overloadedAccess = compileFile(posDir, "overloadedAccess", twice)
46+
*/
47+
@Test def pos_all = compileFiles(posDir, twice)
4548

4649
@Test def neg_blockescapes() = compileFile(negDir, "blockescapesNeg", xerrors = 1)
4750
@Test def neg_typedapply() = compileFile(negDir, "typedapply", xerrors = 4)
@@ -53,32 +56,34 @@ class tests extends CompilerTest {
5356
@Test def neg_templateParents() = compileFile(negDir, "templateParents", xerrors = 3)
5457
@Test def neg_i39 = compileFile(negDir, "i39", xerrors = 1)
5558

56-
@Test def dotc = compileDir(dotcDir + "tools/dotc")
57-
@Test def dotc_ast = compileDir(dotcDir + "tools/dotc/ast")
58-
@Test def dotc_config = compileDir(dotcDir + "tools/dotc/config")
59-
@Test def dotc_core = compileDir(dotcDir + "tools/dotc/core")
60-
@Test def dotc_core_pickling = compileDir(dotcDir + "tools/dotc/core/pickling")
61-
@Test def dotc_transform = compileDir(dotcDir + "tools/dotc/core/transform")
62-
@Test def dotc_parsing = compileDir(dotcDir + "tools/dotc/parsing")
63-
@Test def dotc_printing = compileDir(dotcDir + "tools/dotc/printing")
64-
@Test def dotc_reporting = compileDir(dotcDir + "tools/dotc/reporting")
65-
@Test def dotc_typer = compileDir(dotcDir + "tools/dotc/typer")
66-
@Test def dotc_util = compileDir(dotcDir + "tools/dotc/util")
67-
@Test def tools_io = compileDir(dotcDir + "tools/io")
68-
@Test def tools = compileDir(dotcDir + "tools")
59+
@Test def dotc = compileDir(dotcDir + "tools/dotc", twice)
60+
@Test def dotc_ast = compileDir(dotcDir + "tools/dotc/ast", twice)
61+
@Test def dotc_config = compileDir(dotcDir + "tools/dotc/config", twice)
62+
@Test def dotc_core = compileDir(dotcDir + "tools/dotc/core", twice)
63+
@Test def dotc_core_pickling = compileDir(dotcDir + "tools/dotc/core/pickling", twice)
64+
@Test def dotc_transform = compileDir(dotcDir + "tools/dotc/core/transform", twice)
65+
@Test def dotc_parsing = compileDir(dotcDir + "tools/dotc/parsing", twice)
66+
@Test def dotc_printing = compileDir(dotcDir + "tools/dotc/printing", twice)
67+
@Test def dotc_reporting = compileDir(dotcDir + "tools/dotc/reporting", twice)
68+
@Test def dotc_typer = compileDir(dotcDir + "tools/dotc/typer", twice)
69+
@Test def dotc_util = compileDir(dotcDir + "tools/dotc/util", twice)
70+
@Test def tools_io = compileDir(dotcDir + "tools/io", twice)
71+
@Test def tools = compileDir(dotcDir + "tools", twice)
6972

7073
@Test def testNonCyclic = compileArgs(Array(
7174
dotcDir + "tools/dotc/CompilationUnit.scala",
7275
dotcDir + "tools/dotc/core/Types.scala",
7376
dotcDir + "tools/dotc/ast/Trees.scala",
7477
"-Ylog:frontend",
75-
"-Xprompt"))
78+
"-Xprompt",
79+
"#runs", "2"))
7680

7781
@Test def testIssue_34 = compileArgs(Array(
7882
dotcDir + "tools/dotc/config/Properties.scala",
7983
dotcDir + "tools/dotc/config/PathResolver.scala",
8084
"-Ylog:frontend",
81-
"-Xprompt"))
85+
"-Xprompt",
86+
"#runs", "2"))
8287

8388
//@Test def dotc_compilercommand = compileFile(dotcDir + "tools/dotc/config/", "CompilerCommand")
8489
}

test/test/CompilerTest.scala

+16-2
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,26 @@ class CompilerTest extends DottyTest {
2222
def compileFile(prefix: String, fileName: String, args: List[String] = Nil, xerrors: Int = 0): Unit =
2323
compileArgs((s"$prefix$fileName.scala" :: args).toArray, xerrors)
2424

25-
def compileDir(path: String, args: List[String] = Nil, xerrors: Int = 0): Unit = {
26-
val dir = Directory(path)
25+
def compileDir(path: String, args: List[String] = Nil, xerrors: Int = 0): Unit =
26+
compileDir(Directory(path), args, xerrors)
27+
28+
def compileDir(dir: Directory, args: List[String], xerrors: Int): Unit = {
2729
val fileNames = dir.files.toArray.map(_.toString).filter(_ endsWith ".scala")
2830
compileArgs(fileNames ++ args, xerrors)
2931
}
3032

33+
def compileFiles(path: String, args: List[String] = Nil): Unit = {
34+
val dir = Directory(path)
35+
val fileNames = dir.files.toArray.map(_.toString).filter(_ endsWith ".scala")
36+
for (name <- fileNames) {
37+
println(s"testing $name")
38+
compileArgs((name :: args).toArray, 0)
39+
}
40+
for (subdir <- dir.dirs) {
41+
println(s"testing $subdir")
42+
compileDir(subdir, args, 0)
43+
}
44+
}
3145
}
3246
object CompilerText extends App {
3347

0 commit comments

Comments
 (0)