From f4fa5674094ab7964b9c184ad5d8794db6061044 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Fri, 25 Dec 2015 15:56:40 +0300 Subject: [PATCH] Can't change file for checkResultByFile by simple assignment to myFile anymore --- .../intentions/AbstractIntentionTest.java | 31 ++++++++++--------- .../AbstractQuickFixMultiFileTest.java | 25 ++++++++------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/AbstractIntentionTest.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/AbstractIntentionTest.java index 2868e65917c..23b0edf9e68 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/AbstractIntentionTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/AbstractIntentionTest.java @@ -29,7 +29,6 @@ import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.util.PathUtil; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.Convertor; -import junit.framework.ComparisonFailure; import kotlin.jvm.functions.Function0; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil; @@ -41,6 +40,7 @@ import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.test.InTextDirectivesUtils; import org.jetbrains.kotlin.test.KotlinTestUtils; import org.junit.Assert; +import org.junit.ComparisonFailure; import java.io.File; import java.util.ArrayList; @@ -95,7 +95,7 @@ public abstract class AbstractIntentionTest extends KotlinCodeInsightTestCase { } sourceFilePaths.add(path); - Map pathToFile = ContainerUtil.newMapFromKeys( + Map pathToFiles = ContainerUtil.newMapFromKeys( sourceFilePaths.iterator(), new Convertor() { @Override @@ -127,7 +127,7 @@ public abstract class AbstractIntentionTest extends KotlinCodeInsightTestCase { DirectiveBasedActionUtils.INSTANCE.checkForUnexpectedErrors((KtFile) getFile()); } - doTestFor(pathToFile, intentionAction, fileText); + doTestFor(path, pathToFiles, intentionAction, fileText); if (getFile() instanceof KtFile && !InTextDirectivesUtils.isDirectiveDefined(fileText, "// SKIP_ERRORS_AFTER")) { DirectiveBasedActionUtils.INSTANCE.checkForUnexpectedErrors((KtFile) getFile()); @@ -140,7 +140,7 @@ public abstract class AbstractIntentionTest extends KotlinCodeInsightTestCase { } } - private void doTestFor(Map pathToFile, final IntentionAction intentionAction, String fileText) throws Exception { + private void doTestFor(String mainFilePath, Map pathToFiles, final IntentionAction intentionAction, String fileText) throws Exception { String isApplicableString = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// IS_APPLICABLE: "); boolean isApplicableExpected = isApplicableString == null || isApplicableString.equals("true"); @@ -171,17 +171,20 @@ public abstract class AbstractIntentionTest extends KotlinCodeInsightTestCase { } ); // Don't bother checking if it should have failed. - if (shouldFailString.isEmpty()) { - for (Map.Entry entry: pathToFile.entrySet()) { - //noinspection AssignmentToStaticFieldFromInstanceMethod - myFile = entry.getValue(); - String canonicalPathToExpectedFile = PathUtil.getCanonicalPath(entry.getKey() + ".after"); - - try { - checkResultByFile(canonicalPathToExpectedFile); + if (shouldFailString == null) { + for (Map.Entry entry: pathToFiles.entrySet()) { + String filePath = entry.getKey(); + String canonicalPathToExpectedFile = PathUtil.getCanonicalPath(filePath + ".after"); + if (filePath.equals(mainFilePath)) { + try { + checkResultByFile(canonicalPathToExpectedFile); + } + catch (ComparisonFailure e) { + KotlinTestUtils.assertEqualsToFile(new File(canonicalPathToExpectedFile), getEditor().getDocument().getText()); + } } - catch (ComparisonFailure e) { - KotlinTestUtils.assertEqualsToFile(new File(canonicalPathToExpectedFile), getEditor().getDocument().getText()); + else { + KotlinTestUtils.assertEqualsToFile(new File(canonicalPathToExpectedFile), entry.getValue().getText()); } } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiFileTest.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiFileTest.java index 9829b5f6402..1a08833e807 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiFileTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiFileTest.java @@ -30,7 +30,9 @@ import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; +import com.intellij.testFramework.VfsTestUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.UIUtil; @@ -39,8 +41,8 @@ import kotlin.collections.ArraysKt; import kotlin.collections.CollectionsKt; import kotlin.jvm.functions.Function1; import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.idea.KotlinFileType; import org.jetbrains.kotlin.idea.KotlinDaemonAnalyzerTestCase; +import org.jetbrains.kotlin.idea.KotlinFileType; import org.jetbrains.kotlin.idea.quickfix.utils.QuickfixTestUtilsKt; import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil; import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils; @@ -290,18 +292,13 @@ public abstract class AbstractQuickFixMultiFileTest extends KotlinDaemonAnalyzer String fileName = file.getName(); if (fileName.equals(mainFileName) || !fileName.startsWith(extraFileNamePrefix(myFile.getName()))) continue; - myFile = file; String extraFileFullPath = beforeFileName.replace(mainFileName, fileName); - try { - checkResultByFile(extraFileFullPath.replace(".before.", ".after.")); + File afterFile = new File(extraFileFullPath.replace(".before.", ".after.")); + if (afterFile.exists()) { + KotlinTestUtils.assertEqualsToFile(afterFile, file.getText()); } - catch (AssertionError e) { - if (e.getMessage().startsWith("Cannot find file")) { - checkResultByFile(extraFileFullPath); - } - else { - throw e; - } + else { + KotlinTestUtils.assertEqualsToFile(new File(extraFileFullPath), file.getText()); } } } @@ -396,4 +393,10 @@ public abstract class AbstractQuickFixMultiFileTest extends KotlinDaemonAnalyzer this.content = content; } } + + @NotNull + private VirtualFile findVirtualFile(@NotNull String filePath) { + String absolutePath = getTestDataPath() + filePath; + return VfsTestUtil.findFileByCaseSensitivePath(absolutePath); + } }