a failing test for compiling 'jps' module issues

This commit is contained in:
peter
2012-01-26 18:31:32 +01:00
parent 6bab1d7005
commit e7eb75ebc1
3 changed files with 63 additions and 13 deletions
@@ -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())
);
@@ -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()
}
}
}
@@ -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);