From cc9892a27dcf1748ee00b48a24c3599695a2bf38 Mon Sep 17 00:00:00 2001 From: Sergey Rostov Date: Tue, 20 Nov 2018 13:39:59 +0300 Subject: [PATCH] JPS: Add tests for mpp complementary files tracking after build error (KT-27868) --- .../build/IncrementalJpsTestGenerated.java | 36 +++++++++++++++ .../custom/buildError/_dependencies.txt | 7 +++ .../custom/buildError/_steps.txt | 2 + .../multiplatform/custom/buildError/build.log | 39 ++++++++++++++++ .../multiplatform/custom/buildError/c_a.kt | 1 + .../custom/buildError/c_a.kt.new.1 | 3 ++ .../custom/buildError/c_a.kt.new.2 | 1 + .../multiplatform/custom/buildError/pJs_c.kt | 1 + .../multiplatform/custom/buildError/pJvm_c.kt | 1 + .../buildError2Levels/_dependencies.txt | 7 +++ .../custom/buildError2Levels/_steps.txt | 2 + .../custom/buildError2Levels/build.log | 44 +++++++++++++++++++ .../custom/buildError2Levels/c_a.kt | 1 + .../custom/buildError2Levels/c_a.kt.new.1 | 3 ++ .../custom/buildError2Levels/c_a.kt.new.2 | 1 + .../custom/buildError2Levels/c_b.kt | 1 + .../custom/buildError2Levels/pJs_c.kt | 3 ++ .../custom/buildError2Levels/pJvm_c.kt | 3 ++ 18 files changed, 156 insertions(+) create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/_dependencies.txt create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/_steps.txt create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/build.log create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/c_a.kt create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/c_a.kt.new.1 create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/c_a.kt.new.2 create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/pJs_c.kt create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/pJvm_c.kt create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/_dependencies.txt create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/_steps.txt create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/build.log create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_a.kt create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_a.kt.new.1 create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_a.kt.new.2 create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_b.kt create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/pJs_c.kt create mode 100644 jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/pJvm_c.kt diff --git a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java index 47155dc92c3..cdce49babee 100644 --- a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java +++ b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java @@ -579,11 +579,47 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("jps-plugin/testData/incremental/multiModule/multiplatform/custom"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, true); } + @TestMetadata("buildError") + public void testBuildError() throws Exception { + runTest("jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/"); + } + + @TestMetadata("buildError2Levels") + public void testBuildError2Levels() throws Exception { + runTest("jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/"); + } + @TestMetadata("commonSourcesCompilerArg") public void testCommonSourcesCompilerArg() throws Exception { runTest("jps-plugin/testData/incremental/multiModule/multiplatform/custom/commonSourcesCompilerArg/"); } + @TestMetadata("jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class BuildError extends AbstractIncrementalJpsTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath); + } + + public void testAllFilesPresentInBuildError() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, true); + } + } + + @TestMetadata("jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class BuildError2Levels extends AbstractIncrementalJpsTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, TargetBackend.ANY, testDataFilePath); + } + + public void testAllFilesPresentInBuildError2Levels() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, true); + } + } + @TestMetadata("jps-plugin/testData/incremental/multiModule/multiplatform/custom/commonSourcesCompilerArg") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/_dependencies.txt b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/_dependencies.txt new file mode 100644 index 00000000000..cc3166eab6f --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/_dependencies.txt @@ -0,0 +1,7 @@ +c [sourceSetHolder] + +pJvm [compilationAndSourceSetHolder, jvm] +pJvm -> c [include] + +pJs [compilationAndSourceSetHolder, js] +pJs -> c [include] \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/_steps.txt b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/_steps.txt new file mode 100644 index 00000000000..741783782ad --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/_steps.txt @@ -0,0 +1,2 @@ +make compilation fail +fix error \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/build.log b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/build.log new file mode 100644 index 00000000000..c9064d33933 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/build.log @@ -0,0 +1,39 @@ +================ Step #1 make compilation fail ================= + +Building c +Building pJs +Cleaning output files: + out/production/pJs/pJs.js + out/production/pJs/pJs.meta.js + out/production/pJs/pJs/root-package.kjsm +End of files +Compiling files: + c/src/a.kt + pJs/src/c.kt +End of files +Exit code: ABORT +------------------------------------------ +COMPILATION FAILED +[pJs] Expecting a top level declaration +[pJs] Expecting a top level declaration + +================ Step #2 fix error ================= + +Building c +Building pJs +Compiling files: + c/src/a.kt + pJs/src/c.kt +End of files +Exit code: OK +------------------------------------------ +Building pJvm +Cleaning output files: + out/production/pJvm/META-INF/pJvm.kotlin_module +End of files +Compiling files: + c/src/a.kt + pJvm/src/c.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/c_a.kt b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/c_a.kt new file mode 100644 index 00000000000..ada5b178ead --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/c_a.kt @@ -0,0 +1 @@ +expect fun f() \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/c_a.kt.new.1 b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/c_a.kt.new.1 new file mode 100644 index 00000000000..cfc808ee20b --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/c_a.kt.new.1 @@ -0,0 +1,3 @@ +:( + +expect fun f() \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/c_a.kt.new.2 b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/c_a.kt.new.2 new file mode 100644 index 00000000000..ada5b178ead --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/c_a.kt.new.2 @@ -0,0 +1 @@ +expect fun f() \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/pJs_c.kt b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/pJs_c.kt new file mode 100644 index 00000000000..dd3ad76e04e --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/pJs_c.kt @@ -0,0 +1 @@ +actual fun f() = Unit \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/pJvm_c.kt b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/pJvm_c.kt new file mode 100644 index 00000000000..dd3ad76e04e --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError/pJvm_c.kt @@ -0,0 +1 @@ +actual fun f() = Unit \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/_dependencies.txt b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/_dependencies.txt new file mode 100644 index 00000000000..cc3166eab6f --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/_dependencies.txt @@ -0,0 +1,7 @@ +c [sourceSetHolder] + +pJvm [compilationAndSourceSetHolder, jvm] +pJvm -> c [include] + +pJs [compilationAndSourceSetHolder, js] +pJs -> c [include] \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/_steps.txt b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/_steps.txt new file mode 100644 index 00000000000..741783782ad --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/_steps.txt @@ -0,0 +1,2 @@ +make compilation fail +fix error \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/build.log b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/build.log new file mode 100644 index 00000000000..c8917822212 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/build.log @@ -0,0 +1,44 @@ +================ Step #1 make compilation fail ================= + +Building c +Building pJs +Cleaning output files: + out/production/pJs/pJs.js + out/production/pJs/pJs.meta.js + out/production/pJs/pJs/root-package.kjsm +End of files +Compiling files: + c/src/a.kt + c/src/b.kt + pJs/src/c.kt +End of files +Exit code: ABORT +------------------------------------------ +COMPILATION FAILED +[pJs] Expecting a top level declaration +[pJs] Expecting a top level declaration + +================ Step #2 fix error ================= + +Building c +Building pJs +Compiling files: + c/src/a.kt + c/src/b.kt + pJs/src/c.kt +End of files +Exit code: OK +------------------------------------------ +Marked as dirty by Kotlin: + c/src/b.kt +Building pJvm +Cleaning output files: + out/production/pJvm/META-INF/pJvm.kotlin_module +End of files +Compiling files: + c/src/a.kt + c/src/b.kt + pJvm/src/c.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_a.kt b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_a.kt new file mode 100644 index 00000000000..ada5b178ead --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_a.kt @@ -0,0 +1 @@ +expect fun f() \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_a.kt.new.1 b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_a.kt.new.1 new file mode 100644 index 00000000000..cfc808ee20b --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_a.kt.new.1 @@ -0,0 +1,3 @@ +:( + +expect fun f() \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_a.kt.new.2 b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_a.kt.new.2 new file mode 100644 index 00000000000..ada5b178ead --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_a.kt.new.2 @@ -0,0 +1 @@ +expect fun f() \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_b.kt b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_b.kt new file mode 100644 index 00000000000..fb1d4fe60f2 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/c_b.kt @@ -0,0 +1 @@ +expect fun g() \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/pJs_c.kt b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/pJs_c.kt new file mode 100644 index 00000000000..84de5cf9d17 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/pJs_c.kt @@ -0,0 +1,3 @@ +actual fun f() = Unit + +actual fun g() = Unit \ No newline at end of file diff --git a/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/pJvm_c.kt b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/pJvm_c.kt new file mode 100644 index 00000000000..84de5cf9d17 --- /dev/null +++ b/jps-plugin/testData/incremental/multiModule/multiplatform/custom/buildError2Levels/pJvm_c.kt @@ -0,0 +1,3 @@ +actual fun f() = Unit + +actual fun g() = Unit \ No newline at end of file