a failing test for compiling 'jps' module issues
authorpeter <peter@jetbrains.com>
Thu, 26 Jan 2012 17:29:37 +0000 (18:29 +0100)
committerpeter <peter@jetbrains.com>
Thu, 26 Jan 2012 17:31:32 +0000 (18:31 +0100)
jps/jps-builders/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java
plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy
plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTestCase.java

index 2bb3e3c411abdd003692512bc40d46656272701d..30635be989f87829cc580e8672e9a09d32adadae 100644 (file)
@@ -104,12 +104,13 @@ public class GroovyBuilder extends Builder {
 
       // todo CompilerUtil.addLocaleOptions()
       //todo different outputs in a chunk
+      //todo xmx
       //todo module jdk path
       final List<String> cmd = ExternalProcessUtil.buildJavaCommandLine(
         SystemProperties.getJavaHome() + "/bin/java",
         "org.jetbrains.groovy.compiler.rt.GroovycRunner",
         Collections.<String>emptyList(), new ArrayList<String>(cp),
-        Arrays.asList("-Xmx384m"/*, "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5858"*/),
+        Arrays.asList("-Xmx384m"/*, "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5239"*/),
         Arrays.<String>asList(myForStubs ? "stubs" : "groovyc", tempFile.getPath())
       );
 
index 17df5b873993b1d399720419e8c4d5553747be85..4aab9d2fc036260dffc973503e89c0c184af7048 100644 (file)
@@ -65,6 +65,14 @@ public abstract class GroovyCompilerTest extends GroovyCompilerTestCase {
     assertOutput("Foo", "239");
 
     setFileText(file, "class Bar {}");
+    makeShouldFail()
+
+    setFileText(file, barText);
+    make();
+    assertOutput("Foo", "239");
+  }
+
+  private void makeShouldFail() {
     try {
       make();
       fail("Make should fail");
@@ -74,10 +82,6 @@ public abstract class GroovyCompilerTest extends GroovyCompilerTestCase {
         throw e;
       }
     }
-
-    setFileText(file, barText);
-    make();
-    assertOutput("Foo", "239");
   }
 
   public void testRenameToJava() throws Throwable {
@@ -475,9 +479,9 @@ class Indirect {
   }
 
   public void testDontRecompileUnneeded() {
-    myFixture.addFileToProject('Base.groovy', 'class Base { }').virtualFile
+    myFixture.addFileToProject('Base.groovy', 'class Base { }')
     def foo = myFixture.addFileToProject('Foo.groovy', 'class Foo extends Base { }').virtualFile
-    myFixture.addFileToProject('Bar.groovy', 'class Bar extends Foo { }').virtualFile
+    myFixture.addFileToProject('Bar.groovy', 'class Bar extends Foo { }')
     def main = myFixture.addFileToProject('Main.groovy', 'class Main extends Bar { }').virtualFile
     assertEmpty make()
     long oldBaseStamp = findClassFile("Base").modificationStamp
@@ -490,17 +494,34 @@ class Indirect {
     assert oldBaseStamp == findClassFile("Base").modificationStamp
   }
 
+  public void _testPartialCrossRecompile() {
+    def used = myFixture.addFileToProject('Used.groovy', 'class Used { }')
+    def java = myFixture.addFileToProject('Java.java', 'class Java { void foo(Used used) {} }')
+    def main = myFixture.addFileToProject('Main.groovy', 'class Main extends Java {  }').virtualFile
+
+    assertEmpty compileModule(myModule)
+    assertEmpty compileFiles(used.virtualFile, main)
+    assertEmpty compileModule(myModule)
+    assertEmpty compileModule(myModule)
+    
+    setFileText(used, 'class Used2 {}')
+    makeShouldFail()
+    assert findClassFile('Used') == null
+    assert findClassFile('Used2') == null
+
+    setFileText(used, 'class Used3 {}')
+    setFileText(java, 'class Java { void foo(Used3 used) {} }')
+    assertEmpty make()
+
+    assert findClassFile('Used2') == null
+  }
+
   public static class IdeaModeTest extends GroovyCompilerTest {
     @Override protected boolean useJps() { false }
   }
 
   public static class JpsModeTest extends GroovyCompilerTest {
     @Override protected boolean useJps() { true }
-
-    @Override
-    void testCorrectFailAndCorrect() {
-      super.testCorrectFailAndCorrect()
-    }
   }
 
 }
index 6f910e67db601fbcec3e41ad4db9188c24bfbca3..5dee59b7d0db404f44ce7306a51e40551ed80e9a 100644 (file)
@@ -42,6 +42,7 @@ import com.intellij.testFramework.builders.JavaModuleFixtureBuilder;
 import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase;
 import com.intellij.testFramework.fixtures.TempDirTestFixture;
 import com.intellij.testFramework.fixtures.impl.TempDirTestFixtureImpl;
+import com.intellij.util.Consumer;
 import com.intellij.util.ObjectUtils;
 import com.intellij.util.concurrency.Semaphore;
 import com.intellij.util.ui.UIUtil;
@@ -243,6 +244,33 @@ public abstract class GroovyCompilerTestCase extends JavaCodeInsightFixtureTestC
   }
 
   protected List<String> make() {
+    return runCompiler(new Consumer<ErrorReportingCallback>() {
+      @Override
+      public void consume(ErrorReportingCallback callback) {
+        CompilerManager.getInstance(getProject()).make(callback);
+      }
+    });
+  }
+
+  protected List<String> compileModule(final Module module) {
+    return runCompiler(new Consumer<ErrorReportingCallback>() {
+      @Override
+      public void consume(ErrorReportingCallback callback) {
+        CompilerManager.getInstance(getProject()).compile(module, callback);
+      }
+    });
+  }
+
+  protected List<String> compileFiles(final VirtualFile... files) {
+    return runCompiler(new Consumer<ErrorReportingCallback>() {
+      @Override
+      public void consume(ErrorReportingCallback callback) {
+        CompilerManager.getInstance(getProject()).compile(files, callback);
+      }
+    });
+  }
+
+  private List<String> runCompiler(final Consumer<ErrorReportingCallback> runnable) {
     final Semaphore semaphore = new Semaphore();
     semaphore.down();
     final ErrorReportingCallback callback = new ErrorReportingCallback(semaphore);
@@ -258,7 +286,7 @@ public abstract class GroovyCompilerTestCase extends JavaCodeInsightFixtureTestC
               assert ioFile.exists();
             }
           }
-          CompilerManager.getInstance(getProject()).make(callback);
+          runnable.consume(callback);
         }
         catch (Exception e) {
           throw new RuntimeException(e);