From 2795640c6bfbd62c457e8634360b2eacd24c8f7f Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 4 Jun 2014 02:29:17 +0400 Subject: [PATCH] Test package facade recompile after removing several files Original commit: 2f776affb35f537a301533f246fe58ae44697ad5 --- .../jet/jps/build/KotlinJpsBuildTest.java | 56 ++++++++++++++++++- .../ManyFilesForPackage/kotlinProject.iml | 12 ++++ .../ManyFilesForPackage/kotlinProject.ipr | 14 +++++ .../general/ManyFilesForPackage/src/Bar.kt | 5 ++ .../general/ManyFilesForPackage/src/boo.kt | 6 ++ .../general/ManyFilesForPackage/src/main.kt | 8 +++ 6 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 jps/jps-plugin/testData/general/ManyFilesForPackage/kotlinProject.iml create mode 100644 jps/jps-plugin/testData/general/ManyFilesForPackage/kotlinProject.ipr create mode 100644 jps/jps-plugin/testData/general/ManyFilesForPackage/src/Bar.kt create mode 100644 jps/jps-plugin/testData/general/ManyFilesForPackage/src/boo.kt create mode 100644 jps/jps-plugin/testData/general/ManyFilesForPackage/src/main.kt diff --git a/jps/jps-plugin/test/org/jetbrains/jet/jps/build/KotlinJpsBuildTest.java b/jps/jps-plugin/test/org/jetbrains/jet/jps/build/KotlinJpsBuildTest.java index f143abfa048..ec46b8e1073 100644 --- a/jps/jps-plugin/test/org/jetbrains/jet/jps/build/KotlinJpsBuildTest.java +++ b/jps/jps-plugin/test/org/jetbrains/jet/jps/build/KotlinJpsBuildTest.java @@ -158,20 +158,63 @@ public class KotlinJpsBuildTest extends AbstractKotlinJpsBuildTestCase { checkWhen(touch("src/main.kt"), null, packageClasses("kotlinProject", "src/main.kt", "foo.FooPackage")); checkWhen(touch("src/boo.kt"), null, packageClasses("kotlinProject", "src/boo.kt", "boo.BooPackage")); - checkWhen(touch("src/Bar.kt"), null, new String[] {klass("kotlinProject", "foo.Bar")}); + checkWhen(touch("src/Bar.kt"), + new String[] {"src/Bar.kt", "src/boo.kt", "src/main.kt"}, + new String[] {klass("kotlinProject", "foo.Bar")}); - checkWhen(del("src/main.kt"), null, packageClasses("kotlinProject", "src/main.kt", "foo.FooPackage")); + checkWhen(del("src/main.kt"), + new String[] {"src/Bar.kt", "src/boo.kt"}, + packageClasses("kotlinProject", "src/main.kt", "foo.FooPackage")); + assertFilesExistInOutput(module, "boo/BooPackage.class", "foo/Bar.class"); assertFilesNotExistInOutput(module, "foo/FooPackage.class"); checkWhen(touch("src/boo.kt"), null, packageClasses("kotlinProject", "src/boo.kt", "boo.BooPackage")); checkWhen(touch("src/Bar.kt"), null, new String[] {klass("kotlinProject", "foo.Bar")}); } + public void testManyFilesForPackage() { + doTest(); + + JpsModule module = myProject.getModules().get(0); + assertFilesExistInOutput(module, "foo/FooPackage.class", "boo/BooPackage.class", "foo/Bar.class"); + + checkWhen(touch("src/main.kt"), null, packageClasses("kotlinProject", "src/main.kt", "foo.FooPackage")); + checkWhen(touch("src/boo.kt"), null, packageClasses("kotlinProject", "src/boo.kt", "boo.BooPackage")); + checkWhen(touch("src/Bar.kt"), + new String[] {"src/Bar.kt", "src/boo.kt", "src/main.kt"}, + new String[] { + klass("kotlinProject", "foo.Bar"), + klass("kotlinProject", "foo.FooPackage"), + packagePartClass("kotlinProject", "src/Bar.kt", "foo.FooPackage")}); + + checkWhen(del("src/main.kt"), + new String[] {"src/Bar.kt", "src/boo.kt"}, + packageClasses("kotlinProject", "src/main.kt", "foo.FooPackage")); + assertFilesExistInOutput(module, "foo/FooPackage.class", "boo/BooPackage.class", "foo/Bar.class"); + + checkWhen(touch("src/boo.kt"), null, packageClasses("kotlinProject", "src/boo.kt", "boo.BooPackage")); + checkWhen(touch("src/Bar.kt"), null, + new String[] { + klass("kotlinProject", "foo.Bar"), + klass("kotlinProject", "foo.FooPackage"), + packagePartClass("kotlinProject", "src/Bar.kt", "foo.FooPackage") + }); + } + public void testKotlinProjectTwoFilesInOnePackage() { doTest(); checkWhen(touch("src/test1.kt"), null, packageClasses("kotlinProject", "src/test1.kt", "_DefaultPackage")); checkWhen(touch("src/test2.kt"), null, packageClasses("kotlinProject", "src/test2.kt", "_DefaultPackage")); + + checkWhen(new Action[]{ del("src/test1.kt"), del("src/test2.kt") }, NOTHING, + new String[] { + packagePartClass("kotlinProject", "src/test1.kt", "_DefaultPackage"), + packagePartClass("kotlinProject", "src/test2.kt", "_DefaultPackage"), + klass("kotlinProject", "_DefaultPackage") + }); + + assertFilesNotExistInOutput(myProject.getModules().get(0), "_DefaultPackage.class"); } public void testKotlinJavaProject() { @@ -310,7 +353,14 @@ public class KotlinJpsBuildTest extends AbstractKotlinJpsBuildTestCase { } private void checkWhen(Action action, @Nullable String[] pathsToCompile, @Nullable String[] pathsToDelete) { - action.apply(); + checkWhen(new Action[]{action}, pathsToCompile, pathsToDelete); + } + + private void checkWhen(Action[] actions, @Nullable String[] pathsToCompile, @Nullable String[] pathsToDelete) { + for (Action action : actions) { + action.apply(); + } + makeAll().assertSuccessful(); if (pathsToCompile != null) { diff --git a/jps/jps-plugin/testData/general/ManyFilesForPackage/kotlinProject.iml b/jps/jps-plugin/testData/general/ManyFilesForPackage/kotlinProject.iml new file mode 100644 index 00000000000..0c4fb67a3d4 --- /dev/null +++ b/jps/jps-plugin/testData/general/ManyFilesForPackage/kotlinProject.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/jps/jps-plugin/testData/general/ManyFilesForPackage/kotlinProject.ipr b/jps/jps-plugin/testData/general/ManyFilesForPackage/kotlinProject.ipr new file mode 100644 index 00000000000..8226e21ade3 --- /dev/null +++ b/jps/jps-plugin/testData/general/ManyFilesForPackage/kotlinProject.ipr @@ -0,0 +1,14 @@ + + + + + + + + + + + + + diff --git a/jps/jps-plugin/testData/general/ManyFilesForPackage/src/Bar.kt b/jps/jps-plugin/testData/general/ManyFilesForPackage/src/Bar.kt new file mode 100644 index 00000000000..ae9e0be1836 --- /dev/null +++ b/jps/jps-plugin/testData/general/ManyFilesForPackage/src/Bar.kt @@ -0,0 +1,5 @@ +package foo + +class Bar + +fun other() {} diff --git a/jps/jps-plugin/testData/general/ManyFilesForPackage/src/boo.kt b/jps/jps-plugin/testData/general/ManyFilesForPackage/src/boo.kt new file mode 100644 index 00000000000..e9a050624da --- /dev/null +++ b/jps/jps-plugin/testData/general/ManyFilesForPackage/src/boo.kt @@ -0,0 +1,6 @@ +package boo + +import foo.Bar + +fun boo(bar: Bar) { +} diff --git a/jps/jps-plugin/testData/general/ManyFilesForPackage/src/main.kt b/jps/jps-plugin/testData/general/ManyFilesForPackage/src/main.kt new file mode 100644 index 00000000000..cfcbc18690b --- /dev/null +++ b/jps/jps-plugin/testData/general/ManyFilesForPackage/src/main.kt @@ -0,0 +1,8 @@ +package foo + +import boo.boo + +fun main(args: Array) { + val bar = Bar() + boo(bar) +}