Can't change file for checkResultByFile by simple assignment to myFile anymore

This commit is contained in:
Nikolay Krasko
2015-12-25 15:56:40 +03:00
parent a71d1c24ff
commit f4fa567409
2 changed files with 31 additions and 25 deletions
@@ -29,7 +29,6 @@ import com.intellij.refactoring.util.CommonRefactoringUtil;
import com.intellij.util.PathUtil; import com.intellij.util.PathUtil;
import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.Convertor; import com.intellij.util.containers.Convertor;
import junit.framework.ComparisonFailure;
import kotlin.jvm.functions.Function0; import kotlin.jvm.functions.Function0;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil; 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.InTextDirectivesUtils;
import org.jetbrains.kotlin.test.KotlinTestUtils; import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.junit.Assert; import org.junit.Assert;
import org.junit.ComparisonFailure;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
@@ -95,7 +95,7 @@ public abstract class AbstractIntentionTest extends KotlinCodeInsightTestCase {
} }
sourceFilePaths.add(path); sourceFilePaths.add(path);
Map<String, PsiFile> pathToFile = ContainerUtil.newMapFromKeys( Map<String, PsiFile> pathToFiles = ContainerUtil.newMapFromKeys(
sourceFilePaths.iterator(), sourceFilePaths.iterator(),
new Convertor<String, PsiFile>() { new Convertor<String, PsiFile>() {
@Override @Override
@@ -127,7 +127,7 @@ public abstract class AbstractIntentionTest extends KotlinCodeInsightTestCase {
DirectiveBasedActionUtils.INSTANCE.checkForUnexpectedErrors((KtFile) getFile()); DirectiveBasedActionUtils.INSTANCE.checkForUnexpectedErrors((KtFile) getFile());
} }
doTestFor(pathToFile, intentionAction, fileText); doTestFor(path, pathToFiles, intentionAction, fileText);
if (getFile() instanceof KtFile && !InTextDirectivesUtils.isDirectiveDefined(fileText, "// SKIP_ERRORS_AFTER")) { if (getFile() instanceof KtFile && !InTextDirectivesUtils.isDirectiveDefined(fileText, "// SKIP_ERRORS_AFTER")) {
DirectiveBasedActionUtils.INSTANCE.checkForUnexpectedErrors((KtFile) getFile()); DirectiveBasedActionUtils.INSTANCE.checkForUnexpectedErrors((KtFile) getFile());
@@ -140,7 +140,7 @@ public abstract class AbstractIntentionTest extends KotlinCodeInsightTestCase {
} }
} }
private void doTestFor(Map<String, PsiFile> pathToFile, final IntentionAction intentionAction, String fileText) throws Exception { private void doTestFor(String mainFilePath, Map<String, PsiFile> pathToFiles, final IntentionAction intentionAction, String fileText) throws Exception {
String isApplicableString = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// IS_APPLICABLE: "); String isApplicableString = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// IS_APPLICABLE: ");
boolean isApplicableExpected = isApplicableString == null || isApplicableString.equals("true"); 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. // Don't bother checking if it should have failed.
if (shouldFailString.isEmpty()) { if (shouldFailString == null) {
for (Map.Entry<String, PsiFile> entry: pathToFile.entrySet()) { for (Map.Entry<String, PsiFile> entry: pathToFiles.entrySet()) {
//noinspection AssignmentToStaticFieldFromInstanceMethod String filePath = entry.getKey();
myFile = entry.getValue(); String canonicalPathToExpectedFile = PathUtil.getCanonicalPath(filePath + ".after");
String canonicalPathToExpectedFile = PathUtil.getCanonicalPath(entry.getKey() + ".after"); if (filePath.equals(mainFilePath)) {
try {
try { checkResultByFile(canonicalPathToExpectedFile);
checkResultByFile(canonicalPathToExpectedFile); }
catch (ComparisonFailure e) {
KotlinTestUtils.assertEqualsToFile(new File(canonicalPathToExpectedFile), getEditor().getDocument().getText());
}
} }
catch (ComparisonFailure e) { else {
KotlinTestUtils.assertEqualsToFile(new File(canonicalPathToExpectedFile), getEditor().getDocument().getText()); KotlinTestUtils.assertEqualsToFile(new File(canonicalPathToExpectedFile), entry.getValue().getText());
} }
} }
} }
@@ -30,7 +30,9 @@ import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
import com.intellij.testFramework.VfsTestUtil;
import com.intellij.util.ArrayUtil; import com.intellij.util.ArrayUtil;
import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.UIUtil;
@@ -39,8 +41,8 @@ import kotlin.collections.ArraysKt;
import kotlin.collections.CollectionsKt; import kotlin.collections.CollectionsKt;
import kotlin.jvm.functions.Function1; import kotlin.jvm.functions.Function1;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.idea.KotlinFileType;
import org.jetbrains.kotlin.idea.KotlinDaemonAnalyzerTestCase; 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.quickfix.utils.QuickfixTestUtilsKt;
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil; import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil;
import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils; import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils;
@@ -290,18 +292,13 @@ public abstract class AbstractQuickFixMultiFileTest extends KotlinDaemonAnalyzer
String fileName = file.getName(); String fileName = file.getName();
if (fileName.equals(mainFileName) || !fileName.startsWith(extraFileNamePrefix(myFile.getName()))) continue; if (fileName.equals(mainFileName) || !fileName.startsWith(extraFileNamePrefix(myFile.getName()))) continue;
myFile = file;
String extraFileFullPath = beforeFileName.replace(mainFileName, fileName); String extraFileFullPath = beforeFileName.replace(mainFileName, fileName);
try { File afterFile = new File(extraFileFullPath.replace(".before.", ".after."));
checkResultByFile(extraFileFullPath.replace(".before.", ".after.")); if (afterFile.exists()) {
KotlinTestUtils.assertEqualsToFile(afterFile, file.getText());
} }
catch (AssertionError e) { else {
if (e.getMessage().startsWith("Cannot find file")) { KotlinTestUtils.assertEqualsToFile(new File(extraFileFullPath), file.getText());
checkResultByFile(extraFileFullPath);
}
else {
throw e;
}
} }
} }
} }
@@ -396,4 +393,10 @@ public abstract class AbstractQuickFixMultiFileTest extends KotlinDaemonAnalyzer
this.content = content; this.content = content;
} }
} }
@NotNull
private VirtualFile findVirtualFile(@NotNull String filePath) {
String absolutePath = getTestDataPath() + filePath;
return VfsTestUtil.findFileByCaseSensitivePath(absolutePath);
}
} }