Added multi-module tests on incremental compilation.
Changing code wasn't required, Java's incremental caches were enough.
This commit is contained in:
@@ -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 {
|
||||
|
||||
}
|
||||
+11
@@ -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()
|
||||
}
|
||||
Reference in New Issue
Block a user