From 0c41f4f7365d4841175c067cb4d8490399860c37 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Tue, 14 Jul 2015 14:18:25 +0300 Subject: [PATCH] Remove state from android tests --- .../kotlin/android/KotlinAndroidTestCase.java | 18 +++++++++++++++--- .../android/KotlinAndroidTestCaseBase.java | 2 ++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/KotlinAndroidTestCase.java b/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/KotlinAndroidTestCase.java index e98b51c45a7..bfdd7207c22 100644 --- a/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/KotlinAndroidTestCase.java +++ b/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/KotlinAndroidTestCase.java @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.android; import com.android.SdkConstants; import com.android.ide.common.rendering.RenderSecurityManager; +import com.android.tools.idea.rendering.PsiProjectListener; import com.intellij.facet.FacetManager; import com.intellij.facet.ModifiableFacetModel; import com.intellij.ide.startup.impl.StartupManagerImpl; @@ -43,8 +44,10 @@ import org.jetbrains.kotlin.test.JetTestUtils; import java.io.File; import java.io.FileFilter; import java.io.IOException; +import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; +import java.util.Map; @SuppressWarnings({"JUnitTestCaseWithNonTrivialConstructors"}) @@ -80,6 +83,8 @@ public abstract class KotlinAndroidTestCase extends KotlinAndroidTestCaseBase { System.setProperty(KotlinAndroidTestCaseBase.SDK_PATH_PROPERTY, PathManager.getHomePath() + "/../dependencies/androidSDK"); System.setProperty(KotlinAndroidTestCaseBase.PLATFORM_DIR_PROPERTY, "android-21"); + VfsRootAccess.allowRootAccess(JetTestUtils.getHomeDirectory()); + super.setUp(); // this will throw an exception if we don't have a full Android SDK, so we need to do this first thing before any other setup @@ -142,7 +147,6 @@ public abstract class KotlinAndroidTestCase extends KotlinAndroidTestCaseBase { } ((StartupManagerImpl) StartupManager.getInstance(getProject())).runPostStartupActivities(); - VfsRootAccess.allowRootAccess(JetTestUtils.getHomeDirectory()); kotlinInternalModeOriginalValue = KotlinInternalMode.Instance.getEnabled(); KotlinInternalMode.Instance.setEnabled(true); @@ -177,7 +181,8 @@ public abstract class KotlinAndroidTestCase extends KotlinAndroidTestCaseBase { } protected void createManifest() throws IOException { - myFixture.copyFileToProject("plugins/android-idea-plugin/testData/android/AndroidManifest.xml", SdkConstants.FN_ANDROID_MANIFEST_XML); + myFixture.copyFileToProject("plugins/android-idea-plugin/testData/android/AndroidManifest.xml", + SdkConstants.FN_ANDROID_MANIFEST_XML); } protected void deleteManifest() throws IOException { @@ -207,15 +212,22 @@ public abstract class KotlinAndroidTestCase extends KotlinAndroidTestCaseBase { @Override public void tearDown() throws Exception { KotlinInternalMode.Instance.setEnabled(kotlinInternalModeOriginalValue); - VfsRootAccess.disallowRootAccess(JetTestUtils.getHomeDirectory()); super.tearDown(); + Field listenersField = PsiProjectListener.class.getDeclaredField("ourListeners"); + listenersField.setAccessible(true); + Map listeners = (Map)listenersField.get(null); + listeners.clear(); + + VfsRootAccess.disallowRootAccess(JetTestUtils.getHomeDirectory()); + myModule = null; myAdditionalModules = null; myFixture.tearDown(); myFixture = null; myFacet = null; + if (RenderSecurityManager.RESTRICT_READS) { RenderSecurityManager.sEnabled = true; } diff --git a/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/KotlinAndroidTestCaseBase.java b/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/KotlinAndroidTestCaseBase.java index 6dbd0a83db9..4e7eb4885ef 100644 --- a/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/KotlinAndroidTestCaseBase.java +++ b/plugins/android-idea-plugin/tests/org/jetbrains/kotlin/android/KotlinAndroidTestCaseBase.java @@ -76,6 +76,8 @@ public abstract class KotlinAndroidTestCaseBase extends UsefulTestCase { @Override public void run() throws Exception { KotlinAndroidTestCaseBase.super.tearDown(); + androidJar = null; + androidSdk = null; } }); }