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.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<String, PsiFile> pathToFile = ContainerUtil.newMapFromKeys(
Map<String, PsiFile> pathToFiles = ContainerUtil.newMapFromKeys(
sourceFilePaths.iterator(),
new Convertor<String, PsiFile>() {
@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<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: ");
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<String, PsiFile> entry: pathToFile.entrySet()) {
//noinspection AssignmentToStaticFieldFromInstanceMethod
myFile = entry.getValue();
String canonicalPathToExpectedFile = PathUtil.getCanonicalPath(entry.getKey() + ".after");
try {
checkResultByFile(canonicalPathToExpectedFile);
if (shouldFailString == null) {
for (Map.Entry<String, PsiFile> 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());
}
}
}
@@ -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);
}
}