refactor android kotlin fixture test
- move more setup code to base class
This commit is contained in:
committed by
Yan Zhulanow
parent
95b5c94f8d
commit
84d326ed47
@@ -38,17 +38,9 @@ public abstract class AbstractAndroidCompletionTest : KotlinAndroidTestCase() {
|
|||||||
private var kotlinInternalModeOriginalValue: Boolean = false
|
private var kotlinInternalModeOriginalValue: Boolean = false
|
||||||
|
|
||||||
override fun setUp() {
|
override fun setUp() {
|
||||||
|
|
||||||
System.setProperty(KotlinAndroidTestCaseBase.SDK_PATH_PROPERTY, PathManager.getHomePath() + "/androidSDK/")
|
System.setProperty(KotlinAndroidTestCaseBase.SDK_PATH_PROPERTY, PathManager.getHomePath() + "/androidSDK/")
|
||||||
System.setProperty(KotlinAndroidTestCaseBase.PLATFORM_DIR_PROPERTY, "android-17")
|
System.setProperty(KotlinAndroidTestCaseBase.PLATFORM_DIR_PROPERTY, "android-17")
|
||||||
|
|
||||||
super.setUp()
|
super.setUp()
|
||||||
myFixture!!.setTestDataPath(getTestDataPath())
|
|
||||||
(StartupManager.getInstance(getProject()) as StartupManagerImpl).runPostStartupActivities()
|
|
||||||
VfsRootAccess.allowRootAccess(JetTestCaseBuilder.getHomeDirectory())
|
|
||||||
|
|
||||||
kotlinInternalModeOriginalValue = KotlinInternalMode.enabled
|
|
||||||
KotlinInternalMode.enabled = true
|
|
||||||
setAutoCompleteSetting(false)
|
setAutoCompleteSetting(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,21 +48,6 @@ public abstract class AbstractAndroidCompletionTest : KotlinAndroidTestCase() {
|
|||||||
myFixture!!.copyFileToProject("idea/testData/android/AndroidManifest.xml", SdkConstants.FN_ANDROID_MANIFEST_XML)
|
myFixture!!.copyFileToProject("idea/testData/android/AndroidManifest.xml", SdkConstants.FN_ANDROID_MANIFEST_XML)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun tearDown() {
|
|
||||||
KotlinInternalMode.enabled = kotlinInternalModeOriginalValue
|
|
||||||
VfsRootAccess.disallowRootAccess(JetTestCaseBuilder.getHomeDirectory())
|
|
||||||
|
|
||||||
val builtInsSources = getProject()!!.getComponent<BuiltInsReferenceResolver>(javaClass<BuiltInsReferenceResolver>())!!.getBuiltInsSources()!!
|
|
||||||
val fileManager = (PsiManager.getInstance(getProject()!!) as PsiManagerEx).getFileManager()
|
|
||||||
|
|
||||||
super.tearDown()
|
|
||||||
// Restore mapping between PsiFiles and VirtualFiles dropped in FileManager.cleanupForNextTest(),
|
|
||||||
// otherwise built-ins psi elements will become invalid in next test.
|
|
||||||
for (source in builtInsSources) {
|
|
||||||
val provider = source.getViewProvider()
|
|
||||||
fileManager.setViewProvider(provider.getVirtualFile(), provider)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private fun setAutoCompleteSetting(value: Boolean): Boolean {
|
private fun setAutoCompleteSetting(value: Boolean): Boolean {
|
||||||
val settings = CodeInsightSettings.getInstance()
|
val settings = CodeInsightSettings.getInstance()
|
||||||
val oldValue: Boolean
|
val oldValue: Boolean
|
||||||
@@ -88,7 +65,7 @@ public abstract class AbstractAndroidCompletionTest : KotlinAndroidTestCase() {
|
|||||||
private fun completionType() = CompletionType.BASIC
|
private fun completionType() = CompletionType.BASIC
|
||||||
|
|
||||||
fun doTest(testPath: String?) {
|
fun doTest(testPath: String?) {
|
||||||
myFixture!!.copyDirectoryToProject("res/", "res")
|
myFixture!!.copyDirectoryToProject(getResDir()!!, "res")
|
||||||
myFixture!!.configureByFile(testPath!! + getTestName(true) + ".kt");
|
myFixture!!.configureByFile(testPath!! + getTestName(true) + ".kt");
|
||||||
val fileText = FileUtil.loadFile(File(testPath + getTestName(true) + ".kt"), true)
|
val fileText = FileUtil.loadFile(File(testPath + getTestName(true) + ".kt"), true)
|
||||||
testCompletion(fileText, TargetPlatform.JVM, {
|
testCompletion(fileText, TargetPlatform.JVM, {
|
||||||
@@ -101,7 +78,6 @@ public abstract class AbstractAndroidCompletionTest : KotlinAndroidTestCase() {
|
|||||||
return PluginTestCaseBase.getTestDataPathBase() + "/android/completion/" + getTestName(true) + "/"
|
return PluginTestCaseBase.getTestDataPathBase() + "/android/completion/" + getTestName(true) + "/"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun requireRecentSdk() = true
|
override fun requireRecentSdk() = true
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,10 +26,17 @@ import com.intellij.codeInspection.ex.GlobalInspectionToolWrapper;
|
|||||||
import com.intellij.codeInspection.ex.InspectionManagerEx;
|
import com.intellij.codeInspection.ex.InspectionManagerEx;
|
||||||
import com.intellij.facet.FacetManager;
|
import com.intellij.facet.FacetManager;
|
||||||
import com.intellij.facet.ModifiableFacetModel;
|
import com.intellij.facet.ModifiableFacetModel;
|
||||||
|
import com.intellij.ide.startup.impl.StartupManagerImpl;
|
||||||
import com.intellij.openapi.application.ApplicationManager;
|
import com.intellij.openapi.application.ApplicationManager;
|
||||||
import com.intellij.openapi.module.Module;
|
import com.intellij.openapi.module.Module;
|
||||||
import com.intellij.openapi.roots.ModuleRootModificationUtil;
|
import com.intellij.openapi.roots.ModuleRootModificationUtil;
|
||||||
|
import com.intellij.openapi.startup.StartupManager;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
|
import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess;
|
||||||
|
import com.intellij.psi.FileViewProvider;
|
||||||
|
import com.intellij.psi.PsiManager;
|
||||||
|
import com.intellij.psi.impl.PsiManagerEx;
|
||||||
|
import com.intellij.psi.impl.file.impl.FileManager;
|
||||||
import com.intellij.testFramework.InspectionTestUtil;
|
import com.intellij.testFramework.InspectionTestUtil;
|
||||||
import com.intellij.testFramework.builders.JavaModuleFixtureBuilder;
|
import com.intellij.testFramework.builders.JavaModuleFixtureBuilder;
|
||||||
import com.intellij.testFramework.fixtures.IdeaProjectTestFixture;
|
import com.intellij.testFramework.fixtures.IdeaProjectTestFixture;
|
||||||
@@ -40,11 +47,16 @@ import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl;
|
|||||||
import org.jetbrains.android.facet.AndroidFacet;
|
import org.jetbrains.android.facet.AndroidFacet;
|
||||||
import org.jetbrains.android.facet.AndroidRootUtil;
|
import org.jetbrains.android.facet.AndroidRootUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.JetTestCaseBuilder;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
|
import org.jetbrains.jet.plugin.actions.internal.KotlinInternalMode;
|
||||||
|
import org.jetbrains.jet.plugin.references.BuiltInsReferenceResolver;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings({"JUnitTestCaseWithNonTrivialConstructors"})
|
@SuppressWarnings({"JUnitTestCaseWithNonTrivialConstructors"})
|
||||||
@@ -55,6 +67,8 @@ public abstract class KotlinAndroidTestCase extends KotlinAndroidTestCaseBase {
|
|||||||
private boolean myCreateManifest;
|
private boolean myCreateManifest;
|
||||||
protected AndroidFacet myFacet;
|
protected AndroidFacet myFacet;
|
||||||
|
|
||||||
|
private boolean kotlinInternalModeOriginalValue;
|
||||||
|
|
||||||
public KotlinAndroidTestCase(boolean createManifest) {
|
public KotlinAndroidTestCase(boolean createManifest) {
|
||||||
this.myCreateManifest = createManifest;
|
this.myCreateManifest = createManifest;
|
||||||
}
|
}
|
||||||
@@ -62,7 +76,11 @@ public abstract class KotlinAndroidTestCase extends KotlinAndroidTestCaseBase {
|
|||||||
public KotlinAndroidTestCase() {
|
public KotlinAndroidTestCase() {
|
||||||
this(true);
|
this(true);
|
||||||
}
|
}
|
||||||
public static void SHIT() {}
|
|
||||||
|
@NotNull
|
||||||
|
protected String getResRelativePath() {
|
||||||
|
return "res/";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
@@ -120,6 +138,12 @@ public abstract class KotlinAndroidTestCase extends KotlinAndroidTestCaseBase {
|
|||||||
// Unit test class loader includes disk directories which security manager does not allow access to
|
// Unit test class loader includes disk directories which security manager does not allow access to
|
||||||
RenderSecurityManager.sEnabled = false;
|
RenderSecurityManager.sEnabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
((StartupManagerImpl) StartupManager.getInstance(getProject())).runPostStartupActivities();
|
||||||
|
VfsRootAccess.allowRootAccess(JetTestCaseBuilder.getHomeDirectory());
|
||||||
|
|
||||||
|
kotlinInternalModeOriginalValue = KotlinInternalMode.OBJECT$.getEnabled();
|
||||||
|
KotlinInternalMode.OBJECT$.setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean isToAddSdk() {
|
protected boolean isToAddSdk() {
|
||||||
@@ -200,6 +224,12 @@ public abstract class KotlinAndroidTestCase extends KotlinAndroidTestCaseBase {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tearDown() throws Exception {
|
public void tearDown() throws Exception {
|
||||||
|
KotlinInternalMode.OBJECT$.setEnabled(kotlinInternalModeOriginalValue);
|
||||||
|
VfsRootAccess.disallowRootAccess(JetTestCaseBuilder.getHomeDirectory());
|
||||||
|
|
||||||
|
Set<JetFile> builtInsSources = getProject().getComponent(BuiltInsReferenceResolver.class).getBuiltInsSources();
|
||||||
|
FileManager fileManager = ((PsiManagerEx) PsiManager.getInstance(getProject())).getFileManager();
|
||||||
|
|
||||||
myModule = null;
|
myModule = null;
|
||||||
myAdditionalModules = null;
|
myAdditionalModules = null;
|
||||||
myFixture.tearDown();
|
myFixture.tearDown();
|
||||||
@@ -208,7 +238,15 @@ public abstract class KotlinAndroidTestCase extends KotlinAndroidTestCaseBase {
|
|||||||
if (RenderSecurityManager.RESTRICT_READS) {
|
if (RenderSecurityManager.RESTRICT_READS) {
|
||||||
RenderSecurityManager.sEnabled = true;
|
RenderSecurityManager.sEnabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
super.tearDown();
|
super.tearDown();
|
||||||
|
|
||||||
|
// Restore mapping between PsiFiles and VirtualFiles dropped in FileManager.cleanupForNextTest(),
|
||||||
|
// otherwise built-ins psi elements will become invalid in next test.
|
||||||
|
for (JetFile source : builtInsSources) {
|
||||||
|
FileViewProvider provider = source.getViewProvider();
|
||||||
|
fileManager.setViewProvider(provider.getVirtualFile(), provider);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public AndroidFacet addAndroidFacet(Module module, String sdkPath, String platformDir) {
|
public AndroidFacet addAndroidFacet(Module module, String sdkPath, String platformDir) {
|
||||||
|
|||||||
Reference in New Issue
Block a user