summaryrefslogtreecommitdiff
path: root/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy')
-rw-r--r--plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy43
1 files changed, 43 insertions, 0 deletions
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 2b5933fb4d31..d6363fb560db 100644
--- a/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy
+++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy
@@ -18,16 +18,28 @@ package org.jetbrains.plugins.groovy.compiler
import com.intellij.compiler.CompilerConfiguration
import com.intellij.compiler.CompilerConfigurationImpl
+import com.intellij.execution.executors.DefaultRunExecutor
+import com.intellij.execution.impl.DefaultJavaProgramRunner
+import com.intellij.execution.process.ProcessAdapter
+import com.intellij.execution.process.ProcessEvent
+import com.intellij.execution.process.ProcessHandler
+import com.intellij.execution.process.ProcessOutputTypes
+import com.intellij.execution.runners.ProgramRunner
import com.intellij.openapi.application.ApplicationManager
+import com.intellij.openapi.application.PathManager
import com.intellij.openapi.compiler.CompilerMessage
import com.intellij.openapi.compiler.CompilerMessageCategory
import com.intellij.openapi.compiler.options.ExcludeEntryDescription
import com.intellij.openapi.compiler.options.ExcludedEntriesConfiguration
import com.intellij.openapi.module.Module
import com.intellij.openapi.roots.ModuleRootModificationUtil
+import com.intellij.openapi.util.Key
+import com.intellij.openapi.util.Ref
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiFile
+import com.intellij.testFramework.PsiTestUtil
import com.intellij.testFramework.TestLoggerFactory
+import org.jetbrains.annotations.NotNull
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile
/**
@@ -822,4 +834,35 @@ class AppTest {
def messages = make()
assert messages.find { it.message.contains("Cannot compile Groovy files: no Groovy library is defined for module 'dependent'") }
}
+
+ public void testGroovyOutputIsInstrumented() {
+ myFixture.addFileToProject("Bar.groovy",
+ "import org.jetbrains.annotations.NotNull; " +
+ "public class Bar {" +
+ "void xxx(@NotNull String param) { println param }\n" +
+ "static void main(String[] args) { new Bar().xxx(null) }"+
+ "}"
+ );
+
+ File annotations = new File(PathManager.getJarPathForClass(NotNull.class));
+ PsiTestUtil.addLibrary(myModule, "annotations", annotations.getParent(), annotations.getName());
+
+ assertEmpty(make());
+
+ final Ref<Boolean> exceptionFound = Ref.create(Boolean.FALSE);
+ ProcessHandler process = runProcess("Bar", myModule, DefaultRunExecutor.class, new ProcessAdapter() {
+ @Override
+ public void onTextAvailable(ProcessEvent event, Key outputType) {
+ if (ProcessOutputTypes.SYSTEM != outputType) {
+ if (!exceptionFound.get()) {
+ exceptionFound.set(event.getText().contains("java.lang.IllegalArgumentException: Argument for @NotNull parameter 'param' of Bar.xxx must not be null"));
+ }
+ }
+ }
+ }, ProgramRunner.PROGRAM_RUNNER_EP.findExtension(DefaultJavaProgramRunner.class));
+ process.waitFor();
+
+ assertTrue(exceptionFound.get());
+ }
+
}