mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Cleanup (configuration tests correctly generified and annotated)
This commit is contained in:
@@ -1,3 +1,18 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.execution;
|
||||
|
||||
import com.intellij.execution.actions.ConfigurationContext;
|
||||
@@ -5,7 +20,9 @@ import com.intellij.execution.actions.ConfigurationFromContext;
|
||||
import com.intellij.execution.actions.RunConfigurationProducer;
|
||||
import com.intellij.execution.configurations.RunConfiguration;
|
||||
import com.intellij.execution.junit.JUnitConfiguration;
|
||||
import com.intellij.openapi.actionSystem.DataConstants;
|
||||
import com.intellij.execution.junit.JUnitConfigurationProducer;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.LangDataKeys;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ex.PathManagerEx;
|
||||
import com.intellij.openapi.module.Module;
|
||||
@@ -25,6 +42,7 @@ import com.intellij.testFramework.IdeaTestCase;
|
||||
import com.intellij.testFramework.MapDataContext;
|
||||
import com.intellij.testFramework.PsiTestUtil;
|
||||
import com.intellij.testFramework.TempFiles;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -64,7 +82,7 @@ public abstract class BaseConfigurationTestCase extends IdeaTestCase {
|
||||
ModuleRootModificationUtil.addModuleLibrary(module, mockJUnit.getUrl());
|
||||
ModuleRootModificationUtil.setModuleSdk(module, ModuleRootManager.getInstance(myModule).getSdk());
|
||||
GlobalSearchScope scope = GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module);
|
||||
VirtualFile testCase = mockJUnit.findChild("junit").findChild("framework").findChild("TestCase.java");
|
||||
VirtualFile testCase = mockJUnit.findFileByRelativePath("junit/framework/TestCase.java");
|
||||
assertNotNull(testCase);
|
||||
assertTrue(scope.contains(testCase));
|
||||
Module missingModule = createTempModule();
|
||||
@@ -139,37 +157,39 @@ public abstract class BaseConfigurationTestCase extends IdeaTestCase {
|
||||
return JavaPsiFacade.getInstance(myProject).findClass(qualifiedName, scope);
|
||||
}
|
||||
|
||||
protected JUnitConfiguration createJUnitConfiguration(final PsiElement psiElement,
|
||||
final Class producerClass,
|
||||
final MapDataContext dataContext) {
|
||||
protected JUnitConfiguration createJUnitConfiguration(@NotNull PsiElement psiElement,
|
||||
@NotNull Class<? extends JUnitConfigurationProducer> producerClass,
|
||||
@NotNull MapDataContext dataContext) {
|
||||
ConfigurationContext context = createContext(psiElement, dataContext);
|
||||
RunConfigurationProducer producer = RunConfigurationProducer.getInstance(producerClass);
|
||||
assert producer != null;
|
||||
ConfigurationFromContext fromContext = producer.createConfigurationFromContext(context);
|
||||
assertNotNull(fromContext);
|
||||
return (JUnitConfiguration)fromContext.getConfiguration();
|
||||
}
|
||||
|
||||
protected final <T extends RunConfiguration> T createConfiguration(PsiElement psiElement) {
|
||||
return (T)createConfiguration(psiElement, new MapDataContext());
|
||||
protected final <T extends RunConfiguration> T createConfiguration(@NotNull PsiElement psiElement) {
|
||||
return createConfiguration(psiElement, new MapDataContext());
|
||||
}
|
||||
|
||||
protected <T extends RunConfiguration> T createConfiguration(PsiElement psiElement, MapDataContext dataContext) {
|
||||
protected <T extends RunConfiguration> T createConfiguration(@NotNull PsiElement psiElement, @NotNull MapDataContext dataContext) {
|
||||
ConfigurationContext context = createContext(psiElement, dataContext);
|
||||
RunnerAndConfigurationSettings settings = context.getConfiguration();
|
||||
return settings == null ? null : (T)settings.getConfiguration();
|
||||
@SuppressWarnings("unchecked") T configuration = settings == null ? null : (T)settings.getConfiguration();
|
||||
return configuration;
|
||||
}
|
||||
|
||||
public ConfigurationContext createContext(PsiElement psiClass) {
|
||||
public ConfigurationContext createContext(@NotNull PsiElement psiClass) {
|
||||
MapDataContext dataContext = new MapDataContext();
|
||||
return createContext(psiClass, dataContext);
|
||||
}
|
||||
|
||||
public ConfigurationContext createContext(PsiElement psiClass, MapDataContext dataContext) {
|
||||
dataContext.put(DataConstants.PROJECT, myProject);
|
||||
if (dataContext.getData(DataConstants.MODULE) == null) {
|
||||
dataContext.put(DataConstants.MODULE, ModuleUtilCore.findModuleForPsiElement(psiClass));
|
||||
public ConfigurationContext createContext(@NotNull PsiElement psiClass, @NotNull MapDataContext dataContext) {
|
||||
dataContext.put(CommonDataKeys.PROJECT, myProject);
|
||||
if (LangDataKeys.MODULE.getData(dataContext) == null) {
|
||||
dataContext.put(LangDataKeys.MODULE, ModuleUtilCore.findModuleForPsiElement(psiClass));
|
||||
}
|
||||
dataContext.put(Location.LOCATION, PsiLocation.fromPsiElement(psiClass));
|
||||
dataContext.put(Location.DATA_KEY, PsiLocation.fromPsiElement(psiClass));
|
||||
return ConfigurationContext.getFromContext(dataContext);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,18 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.execution;
|
||||
|
||||
import com.intellij.execution.application.ApplicationConfiguration;
|
||||
@@ -6,6 +21,7 @@ import com.intellij.execution.configurations.RuntimeConfigurationException;
|
||||
import com.intellij.execution.impl.RunnerAndConfigurationSettingsImpl;
|
||||
import com.intellij.execution.junit.AllInPackageConfigurationProducer;
|
||||
import com.intellij.execution.junit.JUnitConfiguration;
|
||||
import com.intellij.execution.junit.JUnitConfigurationProducer;
|
||||
import com.intellij.execution.junit.JUnitConfigurationType;
|
||||
import com.intellij.openapi.application.Result;
|
||||
import com.intellij.openapi.command.WriteCommandAction;
|
||||
@@ -19,6 +35,7 @@ import com.intellij.refactoring.move.moveMembers.MoveMembersProcessor;
|
||||
import com.intellij.refactoring.rename.RenameProcessor;
|
||||
import com.intellij.testFramework.MapDataContext;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@@ -38,6 +55,7 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
"}";
|
||||
public void testRenameApplication() throws IOException {
|
||||
PsiClass psiClass = mySource.createClass("Application", APPLICATION_CODE);
|
||||
assertNotNull(psiClass);
|
||||
ApplicationConfiguration configuration = createConfiguration(psiClass);
|
||||
assertNotNull(configuration);
|
||||
rename(psiClass, "NewName");
|
||||
@@ -52,6 +70,7 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
|
||||
public void testMoveApplication() throws IOException {
|
||||
PsiClass psiClass = mySource.createClass("Application", APPLICATION_CODE);
|
||||
assertNotNull(psiClass);
|
||||
ApplicationConfiguration configuration = createConfiguration(psiClass);
|
||||
move(psiClass, "pkg");
|
||||
try {
|
||||
@@ -71,15 +90,16 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
JUnitConfiguration configuration = createJUnitConfiguration(psiPackage, AllInPackageConfigurationProducer.class, new MapDataContext());
|
||||
rename(psiPackage, "pkg2");
|
||||
checkPackage("pkg2", configuration);
|
||||
PsiPackage outter = mySource.createPackage("outterPkg");
|
||||
move(JavaPsiFacade.getInstance(myProject).findPackage("pkg2"), outter.getQualifiedName());
|
||||
checkPackage("outterPkg.pkg2", configuration);
|
||||
rename(outter, "outter2");
|
||||
checkPackage("outter2.pkg2", configuration);
|
||||
PsiPackage outer = mySource.createPackage("outerPkg");
|
||||
move(JavaPsiFacade.getInstance(myProject).findPackage("pkg2"), outer.getQualifiedName());
|
||||
checkPackage("outerPkg.pkg2", configuration);
|
||||
rename(outer, "outer2");
|
||||
checkPackage("outer2.pkg2", configuration);
|
||||
}
|
||||
|
||||
public void testRenameJUnitContainingPackage() throws IOException {
|
||||
PsiClass psiClass = mySource.createClass("ATest", TEST_CODE);
|
||||
assertNotNull(psiClass);
|
||||
JUnitConfiguration configuration = createConfiguration(psiClass);
|
||||
PsiPackage psiPackage = mySource.createPackage("pkg");
|
||||
move(psiClass, "pkg");
|
||||
@@ -95,6 +115,7 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
|
||||
public void testRefactorTestMethod() throws IOException {
|
||||
PsiClass psiClass = mySource.createClass("ATest", TEST_CODE);
|
||||
assertNotNull(psiClass);
|
||||
PsiMethod testMethod = psiClass.findMethodsByName("test", false)[0];
|
||||
JUnitConfiguration configuration = createConfiguration(testMethod);
|
||||
rename(testMethod, "test1");
|
||||
@@ -110,6 +131,7 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
|
||||
PsiClass otherTest = mySource.createClass("ATest", TEST_CODE);
|
||||
HashSet<PsiMember> members = new HashSet<PsiMember>();
|
||||
assertNotNull(psiClass);
|
||||
members.add(psiClass.findMethodsByName("test1", false)[0]);
|
||||
moveMembers(otherTest, members);
|
||||
psiClass = configuration.getConfigurationModule().findClass(configuration.getPersistentData().getMainClassName());
|
||||
@@ -117,6 +139,7 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
checkClassName("ATest", configuration);
|
||||
assertEquals("ATest.test1", configuration.getName());
|
||||
|
||||
assertNotNull(psiClass);
|
||||
PsiMethod otherMethod = psiClass.findMethodsByName("otherMethod", false)[0];
|
||||
rename(otherMethod, "newName");
|
||||
checkMethodName("test1", configuration);
|
||||
@@ -124,11 +147,13 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
|
||||
public void testRenameBadTestClass() throws IOException {
|
||||
PsiClass psiClass = mySource.createClass("NotATest", NOT_A_TEST);
|
||||
JUnitConfiguration configuration = new JUnitConfiguration("notATest", myProject, JUnitConfigurationType.getInstance().getConfigurationFactories()[0]);
|
||||
assertNotNull(psiClass);
|
||||
JUnitConfigurationType instance = JUnitConfigurationType.getInstance();
|
||||
assertNotNull(instance);
|
||||
JUnitConfiguration configuration = new JUnitConfiguration("notATest", myProject, instance.getConfigurationFactories()[0]);
|
||||
configuration.setMainClass(psiClass);
|
||||
configuration.setModule(configuration.getValidModules().iterator().next());
|
||||
|
||||
|
||||
checkConfigurationException("NotATest isn't test class", configuration);
|
||||
|
||||
RunManagerEx.getInstanceEx(myProject).setTemporaryConfiguration(new RunnerAndConfigurationSettingsImpl(null, configuration, false));
|
||||
@@ -144,7 +169,7 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
assertEquals("test2", data.getMethodName());
|
||||
}
|
||||
|
||||
private void checkConfigurationException(String expectedExceptionMessage, JUnitConfiguration configuration) {
|
||||
private static void checkConfigurationException(String expectedExceptionMessage, JUnitConfiguration configuration) {
|
||||
try {
|
||||
configuration.checkConfiguration();
|
||||
}
|
||||
@@ -156,13 +181,18 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
}
|
||||
|
||||
public void testRefactorOtherClass() throws IOException {
|
||||
JUnitConfiguration configuration = createConfiguration(mySource.createClass("ATest", TEST_CODE));
|
||||
PsiClass psiClass = mySource.createClass("Application", APPLICATION_CODE);
|
||||
PsiClass psiClass = mySource.createClass("ATest", TEST_CODE);
|
||||
assertNotNull(psiClass);
|
||||
JUnitConfiguration configuration = createConfiguration(psiClass);
|
||||
|
||||
psiClass = mySource.createClass("Application", APPLICATION_CODE);
|
||||
assertNotNull(psiClass);
|
||||
rename(psiClass, "NewName");
|
||||
checkClassName("ATest", configuration);
|
||||
mySource.createPackage("pkg");
|
||||
|
||||
psiClass = mySource.findClass("NewName");
|
||||
assertNotNull(psiClass);
|
||||
move(psiClass, "pkg");
|
||||
checkClassName("ATest", configuration);
|
||||
}
|
||||
@@ -170,7 +200,7 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
private void moveMembers(final PsiClass otherTest, final HashSet<PsiMember> members) {
|
||||
new WriteCommandAction(myProject) {
|
||||
@Override
|
||||
protected void run(final Result result) throws Throwable {
|
||||
protected void run(@NotNull Result result) throws Throwable {
|
||||
MockMoveMembersOptions options = new MockMoveMembersOptions(otherTest.getQualifiedName(), members);
|
||||
new MoveMembersProcessor(myProject, null, options).run();
|
||||
}
|
||||
@@ -186,12 +216,13 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
private void move(final PsiElement psiElement, String packageName) {
|
||||
VirtualFile pkgFile = mySource.createPackageDir(packageName);
|
||||
final PsiDirectory toDir = PsiManager.getInstance(myProject).findDirectory(pkgFile);
|
||||
assertNotNull(toDir);
|
||||
new WriteCommandAction(myProject, psiElement.getContainingFile()) {
|
||||
@Override
|
||||
protected void run(final Result result) throws Throwable {
|
||||
protected void run(@NotNull Result result) throws Throwable {
|
||||
PackageWrapper wrapper = PackageWrapper.create(JavaDirectoryService.getInstance().getPackage(toDir));
|
||||
new MoveClassesOrPackagesProcessor(myProject, new PsiElement[]{psiElement},
|
||||
new SingleSourceRootMoveDestination(
|
||||
PackageWrapper.create(JavaDirectoryService.getInstance().getPackage(toDir)), toDir),
|
||||
new SingleSourceRootMoveDestination(wrapper, toDir),
|
||||
false, false, null).run();
|
||||
}
|
||||
}.executeSilently();
|
||||
@@ -200,11 +231,11 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
private void rename(final PsiElement psiElement, final String newName) {
|
||||
new WriteCommandAction(myProject, psiElement.getContainingFile()) {
|
||||
@Override
|
||||
protected void run(final Result result) throws Throwable {
|
||||
protected void run(@NotNull Result result) throws Throwable {
|
||||
new RenameProcessor(myProject, psiElement, newName, false, false).run();
|
||||
}
|
||||
}.executeSilently();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
@@ -218,18 +249,20 @@ public class ConfigurationRefactoringsTest extends BaseConfigurationTestCase {
|
||||
protected void tearDown() throws Exception {
|
||||
mySource.tearDown();
|
||||
mySource = null;
|
||||
super.tearDown(); //To change body of overriden methods use Options | File Templates.
|
||||
super.tearDown();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T extends RunConfiguration> T createConfiguration(PsiElement psiClass, MapDataContext dataContext) {
|
||||
T configuration = (T)super.createConfiguration(psiClass, dataContext);
|
||||
protected <T extends RunConfiguration> T createConfiguration(@NotNull PsiElement psiClass, @NotNull MapDataContext dataContext) {
|
||||
T configuration = super.createConfiguration(psiClass, dataContext);
|
||||
RunManagerEx.getInstanceEx(myProject).setTemporaryConfiguration(new RunnerAndConfigurationSettingsImpl(null, configuration, false));
|
||||
return configuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JUnitConfiguration createJUnitConfiguration(final PsiElement psiElement, final Class producerClass, final MapDataContext dataContext) {
|
||||
protected JUnitConfiguration createJUnitConfiguration(@NotNull PsiElement psiElement,
|
||||
@NotNull Class<? extends JUnitConfigurationProducer> producerClass,
|
||||
@NotNull MapDataContext dataContext) {
|
||||
final JUnitConfiguration configuration = super.createJUnitConfiguration(psiElement, producerClass, dataContext);
|
||||
RunManagerEx.getInstanceEx(myProject).setTemporaryConfiguration(new RunnerAndConfigurationSettingsImpl(null, configuration, false));
|
||||
return configuration;
|
||||
|
||||
Reference in New Issue
Block a user