From c79e2cea2a169ba92736da193ea368429ae97a64 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Wed, 29 Dec 2010 20:39:09 +0300 Subject: [PATCH] fix Maven test --- .../refactoring/rename/PsiElementRenameHandler.java | 10 +++++++++- .../intellij/refactoring/rename/RenameProcessor.java | 6 +++++- .../org/jetbrains/idea/maven/dom/MavenDomTestCase.java | 7 ++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/PsiElementRenameHandler.java b/platform/lang-impl/src/com/intellij/refactoring/rename/PsiElementRenameHandler.java index afcc869a141c..78b511ef5e7f 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/PsiElementRenameHandler.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/PsiElementRenameHandler.java @@ -28,6 +28,7 @@ import com.intellij.openapi.editor.ScrollType; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.util.Condition; import com.intellij.psi.*; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; @@ -135,6 +136,7 @@ public class PsiElementRenameHandler implements RenameHandler { if (element == null) return; final RenameDialog dialog = processor.createRenameDialog(project, element, nameSuggestionContext, editor); + if (defaultName == null && ApplicationManager.getApplication().isUnitTestMode()) { String[] strings = dialog.getSuggestedNames(); if (strings != null && strings.length > 0) { @@ -144,8 +146,14 @@ public class PsiElementRenameHandler implements RenameHandler { defaultName = "undefined"; // need to avoid show dialog in test } } + if (defaultName != null) { - dialog.performRename(defaultName); + try { + dialog.performRename(defaultName); + } catch (CommonRefactoringUtil.RefactoringErrorHintException testErrorHintException){ + dialog.close(DialogWrapper.CANCEL_EXIT_CODE); // to avoid dialog leak + throw testErrorHintException; + } } else { dialog.show(); diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/RenameProcessor.java b/platform/lang-impl/src/com/intellij/refactoring/rename/RenameProcessor.java index 421e1cd3085a..e97598a63d1f 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/RenameProcessor.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/RenameProcessor.java @@ -59,6 +59,8 @@ import java.util.*; public class RenameProcessor extends BaseRefactoringProcessor { private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.rename.RenameProcessor"); + @NonNls public static final String FORCE_RENAME_PROCESSOR_TO_THROW_EXCEPTION_ON_BAD_RENAMEABILITY = + "force.rename.processor.to.throw.exception.on.bad.renameability"; protected final LinkedHashMap myAllRenames = new LinkedHashMap(); @@ -415,7 +417,9 @@ public class RenameProcessor extends BaseRefactoringProcessor { prepareRenaming(myPrimaryElement, myNewName, myAllRenames); } - protected boolean inTestsProduceExceptionOnBadRenameabilityStatus() { return false; } + protected boolean inTestsProduceExceptionOnBadRenameabilityStatus() { + return System.getProperty(FORCE_RENAME_PROCESSOR_TO_THROW_EXCEPTION_ON_BAD_RENAMEABILITY) != null; + } public Collection getNewNames() { return myAllRenames.values(); diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDomTestCase.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDomTestCase.java index 6a31732e98dd..368bd32e9a9d 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDomTestCase.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenDomTestCase.java @@ -43,6 +43,8 @@ import com.intellij.psi.xml.XmlTag; import com.intellij.refactoring.rename.PsiElementRenameHandler; import com.intellij.refactoring.rename.RenameHandler; import com.intellij.refactoring.rename.RenameHandlerRegistry; +import com.intellij.refactoring.rename.RenameProcessor; +import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.testFramework.MapDataContext; import com.intellij.testFramework.fixtures.CodeInsightTestFixture; import com.intellij.testFramework.fixtures.CodeInsightTestUtil; @@ -284,12 +286,15 @@ public abstract class MavenDomTestCase extends MavenImportingTestCase { RenameHandler handler = RenameHandlerRegistry.getInstance().getRenameHandler(context); if (handler == null) return; try { + System.getProperties().put(RenameProcessor.FORCE_RENAME_PROCESSOR_TO_THROW_EXCEPTION_ON_BAD_RENAMEABILITY, ""); invokeRename(context, handler); } - catch (Exception e) { + catch (CommonRefactoringUtil.RefactoringErrorHintException e) { if (!e.getMessage().startsWith("Cannot perform refactoring.")) { throw e; } + } finally { + System.getProperties().remove(RenameProcessor.FORCE_RENAME_PROCESSOR_TO_THROW_EXCEPTION_ON_BAD_RENAMEABILITY); } }