Added multi-module tests on incremental compilation.

Changing code wasn't required, Java's incremental caches were enough.
This commit is contained in:
Evgeny Gerashchenko
2014-11-12 20:19:02 +03:00
parent baea660a0b
commit 967f470b16
29 changed files with 231 additions and 2 deletions
@@ -36,6 +36,8 @@ import org.jetbrains.jps.incremental.messages.BuildMessage
import kotlin.test.assertFalse
import java.util.regex.Pattern
import kotlin.test.assertEquals
import org.jetbrains.jps.model.java.JpsJavaDependencyExtension
import org.jetbrains.jps.model.JpsModuleRootModificationUtil
public abstract class AbstractIncrementalJpsTest : JpsBuildTestCase() {
class object {
@@ -182,7 +184,7 @@ public abstract class AbstractIncrementalJpsTest : JpsBuildTestCase() {
for (line in dependenciesTxt.readLines()) {
val split = line.split("->")
val module = split[0]
val dependencies = split[1].split(",")
val dependencies = if (split.size > 1) split[1].split(",") else array()
result[module] = dependencies.toList()
}
@@ -253,7 +255,7 @@ public abstract class AbstractIncrementalJpsTest : JpsBuildTestCase() {
for ((moduleName, dependencies) in moduleDependencies) {
val module = nameToModule[moduleName]!!
for (dependency in dependencies) {
module.getDependenciesList().addModuleDependency(nameToModule[dependency]!!)
JpsModuleRootModificationUtil.addDependency(module, nameToModule[dependency])
}
}
@@ -40,12 +40,42 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("jps-plugin/testData/incremental/multiModule"), Pattern.compile("^([^\\.]+)$"), true);
}
@TestMetadata("circularDependencyClasses")
public void testCircularDependencyClasses() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/circularDependencyClasses/");
doTest(fileName);
}
@TestMetadata("circularDependencyTopLevelFunctions")
public void testCircularDependencyTopLevelFunctions() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/circularDependencyTopLevelFunctions/");
doTest(fileName);
}
@TestMetadata("simpleDependency")
public void testSimpleDependency() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/simpleDependency/");
doTest(fileName);
}
@TestMetadata("simpleDependencyUnchanged")
public void testSimpleDependencyUnchanged() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/simpleDependencyUnchanged/");
doTest(fileName);
}
@TestMetadata("transitiveDependency")
public void testTransitiveDependency() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/transitiveDependency/");
doTest(fileName);
}
@TestMetadata("twoDependants")
public void testTwoDependants() throws Exception {
String fileName = JetTestUtils.navigationMetadata("jps-plugin/testData/incremental/multiModule/twoDependants/");
doTest(fileName);
}
}
@TestMetadata("jps-plugin/testData/incremental/pureKotlin")
@@ -0,0 +1,14 @@
Cleaning output files:
out/production/module2/b/B.class
out/production/module2/b/BB.class
End of files
Compiling files:
module2/src/module2_b.kt
End of files
Cleaning output files:
out/production/module1/a/A.class
out/production/module1/a/AA.class
End of files
Compiling files:
module1/src/module1_a.kt
End of files
@@ -0,0 +1,2 @@
module1->module2
module2->module1
@@ -0,0 +1,5 @@
package a
open class A
class AA: b.BB()
@@ -0,0 +1,8 @@
package b
class B: a.A() {
}
open class BB {
}
@@ -0,0 +1,11 @@
package b
class B: a.A() {
fun f() {
}
}
open class BB {
fun f() {
}
}
@@ -0,0 +1,15 @@
Cleaning output files:
out/production/module1/a/A.class
out/production/module1/a/APackage$module1_a$*.class
out/production/module1/a/APackage.class
End of files
Compiling files:
module1/src/module1_a.kt
End of files
Cleaning output files:
out/production/module2/b/BPackage$module2_b$*.class
out/production/module2/b/BPackage.class
End of files
Compiling files:
module2/src/module2_b.kt
End of files
@@ -0,0 +1,2 @@
module1->
module2->module1
@@ -0,0 +1,6 @@
package a
class A
fun a() {
}
@@ -0,0 +1,7 @@
package a
class A
fun a(): String {
return ":)"
}
@@ -0,0 +1,5 @@
package b
fun b(param: a.A) {
a.a()
}
@@ -0,0 +1,8 @@
Cleaning output files:
out/production/module1/a/A.class
out/production/module1/a/APackage$module1_a$*.class
out/production/module1/a/APackage.class
End of files
Compiling files:
module1/src/module1_a.kt
End of files
@@ -0,0 +1,2 @@
module1->
module2->module1
@@ -0,0 +1,7 @@
package a
class A
fun a() {
println("I'm an old body")
}
@@ -0,0 +1,7 @@
package a
class A
fun a() {
println("I'm a new body")
}
@@ -0,0 +1,5 @@
package b
fun b(param: a.A) {
a.a()
}
@@ -0,0 +1,15 @@
Cleaning output files:
out/production/module1/a/A.class
out/production/module1/a/APackage$module1_a$*.class
out/production/module1/a/APackage.class
End of files
Compiling files:
module1/src/module1_a.kt
End of files
Cleaning output files:
out/production/module2/b/BPackage$module2_b$*.class
out/production/module2/b/BPackage.class
End of files
Compiling files:
module2/src/module2_b.kt
End of files
@@ -0,0 +1,3 @@
module1->
module2->module1
module3->module2
@@ -0,0 +1,6 @@
package a
class A
fun a() {
}
@@ -0,0 +1,7 @@
package a
class A
fun a(): String {
return ":)"
}
@@ -0,0 +1,9 @@
package b
fun b(param: a.A) {
a.a()
}
fun bb() {
}
@@ -0,0 +1,5 @@
package c
fun c() {
b.bb()
}
@@ -0,0 +1,22 @@
Cleaning output files:
out/production/module1/a/A.class
out/production/module1/a/APackage$module1_a$*.class
out/production/module1/a/APackage.class
End of files
Compiling files:
module1/src/module1_a.kt
End of files
Cleaning output files:
out/production/module3/c/CPackage$module3_c$*.class
out/production/module3/c/CPackage.class
End of files
Compiling files:
module3/src/module3_c.kt
End of files
Cleaning output files:
out/production/module2/b/BPackage$module2_b$*.class
out/production/module2/b/BPackage.class
End of files
Compiling files:
module2/src/module2_b.kt
End of files
@@ -0,0 +1,3 @@
module1->
module2->module1
module3->module1
@@ -0,0 +1,6 @@
package a
class A
fun a() {
}
@@ -0,0 +1,7 @@
package a
class A
fun a(): String {
return ":)"
}
@@ -0,0 +1,5 @@
package b
fun b(param: a.A) {
a.a()
}
@@ -0,0 +1,5 @@
package c
fun c(param: a.A) {
a.a()
}