Reset application to null after test in KotlinTestWithEnvironment
This commit is contained in:
@@ -16,15 +16,23 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.test;
|
package org.jetbrains.kotlin.test;
|
||||||
|
|
||||||
|
import com.intellij.openapi.application.Application;
|
||||||
|
import com.intellij.openapi.application.ApplicationManager;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
|
||||||
|
import org.jetbrains.kotlin.utils.ExceptionUtilsKt;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
public abstract class KotlinTestWithEnvironment extends KotlinTestWithEnvironmentManagement {
|
public abstract class KotlinTestWithEnvironment extends KotlinTestWithEnvironmentManagement {
|
||||||
protected KotlinCoreEnvironment environment;
|
private KotlinCoreEnvironment environment;
|
||||||
|
private Application application;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setUp() throws Exception {
|
protected void setUp() throws Exception {
|
||||||
|
application = ApplicationManager.getApplication();
|
||||||
|
|
||||||
super.setUp();
|
super.setUp();
|
||||||
environment = createEnvironment();
|
environment = createEnvironment();
|
||||||
}
|
}
|
||||||
@@ -34,6 +42,23 @@ public abstract class KotlinTestWithEnvironment extends KotlinTestWithEnvironmen
|
|||||||
removeEnvironment();
|
removeEnvironment();
|
||||||
environment = null;
|
environment = null;
|
||||||
super.tearDown();
|
super.tearDown();
|
||||||
|
|
||||||
|
if (application == null) {
|
||||||
|
resetApplicationToNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
application = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void resetApplicationToNull() {
|
||||||
|
try {
|
||||||
|
Field ourApplicationField = ApplicationManager.class.getDeclaredField("ourApplication");
|
||||||
|
ourApplicationField.setAccessible(true);
|
||||||
|
ourApplicationField.set(null, null);
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
throw ExceptionUtilsKt.rethrow(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract KotlinCoreEnvironment createEnvironment() throws Exception;
|
protected abstract KotlinCoreEnvironment createEnvironment() throws Exception;
|
||||||
|
|||||||
Reference in New Issue
Block a user