Skip to content

Commit 2f49a46

Browse files
committed
Merge branch 'feature-cherry-pick-from-pr1246-to-3.1.x' into 3.1.x
2 parents 518c559 + ce3cc85 commit 2f49a46

23 files changed

+1272
-1082
lines changed

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,14 @@ This command will build and run the regular tests:
4444

4545
`$ sbt test`
4646

47-
To run generated all tests, you'll need to increase maximum heap size to -Xmx5000M, and use this command instead:
47+
To run generated all tests, you'll need to increase maximum heap size to at least -Xmx5000M, and use this command instead:
4848

49-
`$ sbt gentests/test`
49+
$ rm -rf gentests
50+
$ sbt gentests/test
5051

5152
You can also run different groups generated tests separately:
52-
53+
54+
$ rm -rf gentests
5355
$ sbt genMustMatchersTests1/test
5456
$ sbt genMustMatchersTests2/test
5557
$ sbt genMustMatchersTests3/test
@@ -65,7 +67,6 @@ You can also run different groups generated tests separately:
6567
$ sbt genSortedTests/test
6668
$ sbt genLoneElementTests/test
6769
$ sbt genEmptyTests/test
68-
$ sbt genSafeStyleTests/test
6970

7071
What it does is simply switch to gentests project and run test.
7172

project/GenCommonTestJS.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,11 @@ object GenCommonTestJS {
6060
files.map { sourceFileName =>
6161
val sourceFile = new File(sourceDir, sourceFileName)
6262
val destFile = new File(packageDir, sourceFile.getName)
63-
copyFile(sourceFile, destFile)
63+
if (!destFile.exists || sourceFile.lastModified > destFile.lastModified) {
64+
copyFile(sourceFile, destFile)
65+
}
66+
67+
destFile
6468
}
6569
}
6670

project/GenCompatibleClasses.scala

Lines changed: 46 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import java.io.{FileWriter, BufferedWriter, File}
22

33
object GenCompatibleClasses {
44

5+
val generatorSource = new File("GenCompatibleClasses.scala")
6+
57
def genMain(targetDir: File, version: String, scalaVersion: String): Seq[File] = {
68
targetDir.mkdirs()
79
val listCellRendererClass = Class.forName("javax.swing.ListCellRenderer")
@@ -16,55 +18,59 @@ object GenCompatibleClasses {
1618
val java6ClassesFiles =
1719
java6Classes.map { case (name, cls) =>
1820
val file = new File(targetDir, name + ".scala")
19-
val bw = new BufferedWriter(new FileWriter(file))
20-
try {
21-
bw.write("package org.scalatest.tools\n")
22-
bw.write("import javax.swing._\n")
23-
if (isJava7)
24-
bw.write(cls + "[EventHolder]")
25-
else
26-
bw.write(cls)
27-
}
28-
finally {
29-
bw.flush()
30-
bw.close()
21+
if (!file.exists || generatorSource.lastModified > file.lastModified) {
22+
val bw = new BufferedWriter(new FileWriter(file))
23+
try {
24+
bw.write("package org.scalatest.tools\n")
25+
bw.write("import javax.swing._\n")
26+
if (isJava7)
27+
bw.write(cls + "[EventHolder]")
28+
else
29+
bw.write(cls)
30+
}
31+
finally {
32+
bw.flush()
33+
bw.close()
34+
}
35+
println("Generated " + file.getAbsolutePath)
3136
}
32-
println("Generated " + file.getAbsolutePath)
3337
file
3438
}
3539

3640
val file = new File(targetDir, "EventHolderListCellRenderer.scala")
37-
val bw = new BufferedWriter(new FileWriter(file))
41+
if (!file.exists || generatorSource.lastModified > file.lastModified) {
42+
val bw = new BufferedWriter(new FileWriter(file))
3843

39-
try {
40-
bw.write("package org.scalatest.tools\n")
41-
bw.write("import java.awt.Component\n")
42-
bw.write("import javax.swing._\n")
43-
if (isJava7) { // workaround from http://www.scala-lang.org/old/node/10687
44-
bw.write("private[tools] trait EventHolderListCellRenderer extends ListCellRenderer[EventHolder] {\n")
45-
bw.write(" private val defaultRenderer: ListCellRenderer[EventHolder] = (new DefaultListCellRenderer()).asInstanceOf[ListCellRenderer[EventHolder]]\n")
46-
bw.write(" protected def decorate(renderer: JLabel, value: Object, isSelected: Boolean): Component\n")
47-
bw.write(" def getListCellRendererComponent(list: JList[_ <: EventHolder], value: EventHolder, index: Int, isSelected: Boolean, cellHasFocus: Boolean): Component = {\n")
48-
bw.write(" val renderer: JLabel = defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus).asInstanceOf[JLabel]\n")
49-
bw.write(" decorate(renderer, value, isSelected)\n")
50-
bw.write(" }")
51-
bw.write("}\n")
44+
try {
45+
bw.write("package org.scalatest.tools\n")
46+
bw.write("import java.awt.Component\n")
47+
bw.write("import javax.swing._\n")
48+
if (isJava7) { // workaround from http://www.scala-lang.org/old/node/10687
49+
bw.write("private[tools] trait EventHolderListCellRenderer extends ListCellRenderer[EventHolder] {\n")
50+
bw.write(" private val defaultRenderer: ListCellRenderer[EventHolder] = (new DefaultListCellRenderer()).asInstanceOf[ListCellRenderer[EventHolder]]\n")
51+
bw.write(" protected def decorate(renderer: JLabel, value: Object, isSelected: Boolean): Component\n")
52+
bw.write(" def getListCellRendererComponent(list: JList[_ <: EventHolder], value: EventHolder, index: Int, isSelected: Boolean, cellHasFocus: Boolean): Component = {\n")
53+
bw.write(" val renderer: JLabel = defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus).asInstanceOf[JLabel]\n")
54+
bw.write(" decorate(renderer, value, isSelected)\n")
55+
bw.write(" }")
56+
bw.write("}\n")
57+
}
58+
else {
59+
bw.write("private[tools] trait EventHolderListCellRenderer extends ListCellRenderer {\n")
60+
bw.write(" private val defaultRenderer: DefaultListCellRenderer = new DefaultListCellRenderer()\n")
61+
bw.write(" protected def decorate(renderer: JLabel, value: Object, isSelected: Boolean): Component\n")
62+
bw.write(" def getListCellRendererComponent(list: JList, value: Object, index: Int, isSelected: Boolean, cellHasFocus: Boolean): Component = {\n")
63+
bw.write(" val renderer: JLabel = defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus).asInstanceOf[JLabel]\n")
64+
bw.write(" decorate(renderer, value, isSelected)\n")
65+
bw.write(" }")
66+
bw.write("}\n")
67+
}
5268
}
53-
else {
54-
bw.write("private[tools] trait EventHolderListCellRenderer extends ListCellRenderer {\n")
55-
bw.write(" private val defaultRenderer: DefaultListCellRenderer = new DefaultListCellRenderer()\n")
56-
bw.write(" protected def decorate(renderer: JLabel, value: Object, isSelected: Boolean): Component\n")
57-
bw.write(" def getListCellRendererComponent(list: JList, value: Object, index: Int, isSelected: Boolean, cellHasFocus: Boolean): Component = {\n")
58-
bw.write(" val renderer: JLabel = defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus).asInstanceOf[JLabel]\n")
59-
bw.write(" decorate(renderer, value, isSelected)\n")
60-
bw.write(" }")
61-
bw.write("}\n")
69+
finally {
70+
bw.flush()
71+
bw.close()
6272
}
6373
}
64-
finally {
65-
bw.flush()
66-
bw.close()
67-
}
6874

6975
java6ClassesFiles.toSeq ++ Seq(file)
7076
}

project/GenContain1.scala

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import io.Source
1919
import java.io.{File, FileWriter, BufferedWriter}
2020

2121
object GenContain1 extends GenContainBase {
22+
23+
val generatorSource = new File("GenContain1.scala")
2224

2325
def genTest(targetBaseDir: File, version: String, scalaVersion: String): Seq[File] = {
2426

@@ -29,21 +31,23 @@ object GenContain1 extends GenContainBase {
2931
def generateFile(sourceFileName: String, typeName: String, mapping: (String, String)*): File = {
3032
val generatedFileName = sourceFileName.replaceAll("List", typeName)
3133
val generatedFile = new File(targetBaseDir, generatedFileName)
32-
val writer = new BufferedWriter(new FileWriter(generatedFile))
33-
try {
34-
val lines = Source.fromFile(new File(sourceBaseDir, sourceFileName)).getLines().toList // for 2.8
35-
for (line <- lines) {
36-
val generatedLine = translateLine(line, mapping.toList: _*)
37-
writer.write(generatedLine.toString)
38-
writer.newLine() // add for 2.8
34+
if (!generatedFile.exists || generatorSource.lastModified > generatedFile.lastModified) {
35+
val writer = new BufferedWriter(new FileWriter(generatedFile))
36+
try {
37+
val lines = Source.fromFile(new File(sourceBaseDir, sourceFileName)).getLines().toList // for 2.8
38+
for (line <- lines) {
39+
val generatedLine = translateLine(line, mapping.toList: _*)
40+
writer.write(generatedLine.toString)
41+
writer.newLine() // add for 2.8
42+
}
43+
}
44+
finally {
45+
writer.flush()
46+
writer.close()
47+
println("Generated " + generatedFile.getAbsolutePath)
3948
}
40-
generatedFile
41-
}
42-
finally {
43-
writer.flush()
44-
writer.close()
45-
println("Generated " + generatedFile.getAbsolutePath)
4649
}
50+
generatedFile
4751
}
4852

4953
Seq(

project/GenContain2.scala

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import java.io.{File, FileWriter, BufferedWriter}
2020

2121
object GenContain2 extends GenContainBase {
2222

23+
val generatorSource = new File("GenContain2.scala")
24+
2325
def genTest(targetBaseDir: File, version: String, scalaVersion: String): Seq[File] = {
2426

2527
val sourceBaseDir = new File("scalatest-test/src/test/scala/org/scalatest")
@@ -29,21 +31,23 @@ object GenContain2 extends GenContainBase {
2931
def generateFile(sourceFileName: String, typeName: String, mapping: (String, String)*): File = {
3032
val generatedFileName = sourceFileName.replaceAll("List", typeName)
3133
val generatedFile = new File(targetBaseDir, generatedFileName)
32-
val writer = new BufferedWriter(new FileWriter(generatedFile))
33-
try {
34-
val lines = Source.fromFile(new File(sourceBaseDir, sourceFileName)).getLines().toList // for 2.8
35-
for (line <- lines) {
36-
val generatedLine = translateLine(line, mapping.toList: _*)
37-
writer.write(generatedLine.toString)
38-
writer.newLine() // add for 2.8
34+
if (!generatedFile.exists || generatorSource.lastModified > generatedFile.lastModified) {
35+
val writer = new BufferedWriter(new FileWriter(generatedFile))
36+
try {
37+
val lines = Source.fromFile(new File(sourceBaseDir, sourceFileName)).getLines().toList // for 2.8
38+
for (line <- lines) {
39+
val generatedLine = translateLine(line, mapping.toList: _*)
40+
writer.write(generatedLine.toString)
41+
writer.newLine() // add for 2.8
42+
}
43+
}
44+
finally {
45+
writer.flush()
46+
writer.close()
47+
println("Generated " + generatedFile.getAbsolutePath)
3948
}
40-
generatedFile
41-
}
42-
finally {
43-
writer.flush()
44-
writer.close()
45-
println("Generated " + generatedFile.getAbsolutePath)
4649
}
50+
generatedFile
4751
}
4852

4953
Seq(

project/GenEmpty.scala

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import io.Source
1919
import java.io.{File, FileWriter, BufferedWriter}
2020

2121
object GenEmpty {
22+
23+
val generatorSource = new File("GenEmpty.scala")
2224

2325
def translateLine(line: String, mapping: (String, String)*): String = {
2426
@tailrec
@@ -41,21 +43,23 @@ object GenEmpty {
4143
def generateFile(sourceFileName: String, typeName: String, mapping: (String, String)*): File = {
4244
val generatedFileName = sourceFileName.replaceAll("List", typeName)
4345
val generatedFile = new File(targetBaseDir, generatedFileName)
44-
val writer = new BufferedWriter(new FileWriter(generatedFile))
45-
try {
46-
val lines = Source.fromFile(new File(sourceBaseDir, sourceFileName)).getLines().toList // for 2.8
47-
for (line <- lines) {
48-
val generatedLine = translateLine(line, mapping.toList: _*)
49-
writer.write(generatedLine.toString)
50-
writer.newLine() // add for 2.8
46+
if (!generatedFile.exists || generatorSource.lastModified > generatedFile.lastModified) {
47+
val writer = new BufferedWriter(new FileWriter(generatedFile))
48+
try {
49+
val lines = Source.fromFile(new File(sourceBaseDir, sourceFileName)).getLines().toList // for 2.8
50+
for (line <- lines) {
51+
val generatedLine = translateLine(line, mapping.toList: _*)
52+
writer.write(generatedLine.toString)
53+
writer.newLine() // add for 2.8
54+
}
55+
}
56+
finally {
57+
writer.flush()
58+
writer.close()
59+
println("Generated " + generatedFile.getAbsolutePath)
5160
}
52-
generatedFile
53-
}
54-
finally {
55-
writer.flush()
56-
writer.close()
57-
println("Generated " + generatedFile.getAbsolutePath)
5861
}
62+
generatedFile
5963
}
6064

6165
val arrayMapping =

0 commit comments

Comments
 (0)