Fixing non-running tests, that used MockApplication environment

This commit is contained in:
Nicolay Mitropolsky
2017-12-12 18:57:06 +03:00
committed by Nikolay Krasko
parent c1cf03d89c
commit a278e4ccef
2 changed files with 8 additions and 0 deletions
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.test.testFramework package org.jetbrains.kotlin.test.testFramework
import com.intellij.mock.MockApplication
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
import org.jetbrains.annotations.TestOnly import org.jetbrains.annotations.TestOnly
import java.lang.reflect.InvocationTargetException import java.lang.reflect.InvocationTargetException
@@ -41,6 +42,7 @@ fun runInEdtAndWait(runnable: () -> Unit) {
else { else {
try { try {
val application = ApplicationManager.getApplication() val application = ApplicationManager.getApplication()
.takeIf { it !is MockApplication } // because MockApplication do nothing instead of `invokeAndWait`
if (application != null) if (application != null)
application.invokeAndWait(runnable) application.invokeAndWait(runnable)
else else
@@ -52,6 +52,7 @@ import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
@SuppressWarnings("UseOfSystemOutOrSystemErr") @SuppressWarnings("UseOfSystemOutOrSystemErr")
public abstract class KtUsefulTestCase extends TestCase { public abstract class KtUsefulTestCase extends TestCase {
@@ -217,9 +218,11 @@ public abstract class KtUsefulTestCase extends TestCase {
protected void runTest() throws Throwable { protected void runTest() throws Throwable {
Throwable[] throwables = new Throwable[1]; Throwable[] throwables = new Throwable[1];
AtomicBoolean completed = new AtomicBoolean(false);
Runnable runnable = () -> { Runnable runnable = () -> {
try { try {
super.runTest(); super.runTest();
completed.set(true);
} }
catch (InvocationTargetException e) { catch (InvocationTargetException e) {
e.fillInStackTrace(); e.fillInStackTrace();
@@ -239,6 +242,9 @@ public abstract class KtUsefulTestCase extends TestCase {
if (throwables[0] != null) { if (throwables[0] != null) {
throw throwables[0]; throw throwables[0];
} }
if (!completed.get()) {
throw new IllegalStateException("test didn't start");
}
} }
private static void invokeTestRunnable(@NotNull Runnable runnable) throws Exception { private static void invokeTestRunnable(@NotNull Runnable runnable) throws Exception {