diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java index 2bb3e3c411ab..30635be989f8 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java @@ -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 cmd = ExternalProcessUtil.buildJavaCommandLine( SystemProperties.getJavaHome() + "/bin/java", "org.jetbrains.groovy.compiler.rt.GroovycRunner", Collections.emptyList(), new ArrayList(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.asList(myForStubs ? "stubs" : "groovyc", tempFile.getPath()) ); diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy index 17df5b873993..4aab9d2fc036 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy @@ -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() - } } } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTestCase.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTestCase.java index 6f910e67db60..5dee59b7d0db 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTestCase.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTestCase.java @@ -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 make() { + return runCompiler(new Consumer() { + @Override + public void consume(ErrorReportingCallback callback) { + CompilerManager.getInstance(getProject()).make(callback); + } + }); + } + + protected List compileModule(final Module module) { + return runCompiler(new Consumer() { + @Override + public void consume(ErrorReportingCallback callback) { + CompilerManager.getInstance(getProject()).compile(module, callback); + } + }); + } + + protected List compileFiles(final VirtualFile... files) { + return runCompiler(new Consumer() { + @Override + public void consume(ErrorReportingCallback callback) { + CompilerManager.getInstance(getProject()).compile(files, callback); + } + }); + } + + private List runCompiler(final Consumer 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);