Minor: better diagnostic message in tests

This commit is contained in:
Nikolay Krasko
2015-12-08 15:39:48 +03:00
parent 789738c45f
commit 3c5b02e54a
@@ -35,7 +35,9 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.stubs.StubUpdatingIndex;
import com.intellij.rt.execution.junit.FileComparisonFailure;
import com.intellij.util.indexing.FileBasedIndex;
import kotlin.CollectionsKt;
import kotlin.StringsKt;
import kotlin.jvm.functions.Function1;
import org.apache.commons.lang.SystemUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -81,12 +83,12 @@ public abstract class AbstractQuickFixTest extends KotlinLightQuickFixTestCase {
//region Severe hack - lot of code copied from LightQuickFixTestCase to workaround stupid format of test data with before/after prefixes
@Override
protected void doSingleTest(String fileSuffix) {
doTestFor(fileSuffix, createWrapper());
doKotlinQuickFixTest(fileSuffix, createWrapper());
}
private static QuickFixTestCase myWrapper;
private void doTestFor(final String testName, final QuickFixTestCase quickFixTestCase) {
private void doKotlinQuickFixTest(final String testName, final QuickFixTestCase quickFixTestCase) {
String relativePath = notNull(quickFixTestCase.getBasePath(), "") + "/" + StringsKt.decapitalize(testName);
final String testFullPath = quickFixTestCase.getTestDataPath().replace(File.separatorChar, '/') + relativePath;
final File testFile = new File(testFullPath);
@@ -161,7 +163,7 @@ public abstract class AbstractQuickFixTest extends KotlinLightQuickFixTestCase {
}
//endregion
private void configureRuntimeIfNeeded(@NotNull String beforeFileName) {
private static void configureRuntimeIfNeeded(@NotNull String beforeFileName) {
if (beforeFileName.endsWith("JsRuntime.kt")) {
// Without the following line of code subsequent tests with js-runtime will be prone to failure due "outdated stub in index" error.
FileBasedIndex.getInstance().requestRebuild(StubUpdatingIndex.INDEX_ID);
@@ -200,10 +202,28 @@ public abstract class AbstractQuickFixTest extends KotlinLightQuickFixTestCase {
String prefix = "class ";
if (pair.first.startsWith(prefix)) {
String className = pair.first.substring(prefix.length());
Class<?> aClass = Class.forName(className);
final Class<?> aClass = Class.forName(className);
assert IntentionAction.class.isAssignableFrom(aClass) : className + " should be inheritor of IntentionAction";
Set<String> validActions = new HashSet<String>(InTextDirectivesUtils.findLinesWithPrefixesRemoved(text, "// ACTION:"));
final Set<String> validActions = new HashSet<String>(InTextDirectivesUtils.findLinesWithPrefixesRemoved(text, "// ACTION:"));
CollectionsKt.removeAll(actions, new Function1<IntentionAction, Boolean>() {
@Override
public Boolean invoke(IntentionAction action) {
return !aClass.isAssignableFrom(action.getClass()) || validActions.contains(action.getText());
}
});
if (!actions.isEmpty()) {
Assert.fail("Unexpected intention actions present\n " +
CollectionsKt.map(actions, new Function1<IntentionAction, String>() {
@Override
public String invoke(IntentionAction action) {
return action.getClass().toString() + " " + action.toString() + "\n";
}
})
);
}
for (IntentionAction action : actions) {
if (aClass.isAssignableFrom(action.getClass()) && !validActions.contains(action.getText())) {
@@ -213,13 +233,13 @@ public abstract class AbstractQuickFixTest extends KotlinLightQuickFixTestCase {
}
else {
// Action shouldn't be found. Check that other actions are expected and thus tested action isn't there under another name.
DirectiveBasedActionUtils.INSTANCE$.checkAvailableActionsAreExpected((KtFile) getFile(), actions);
DirectiveBasedActionUtils.INSTANCE.checkAvailableActionsAreExpected(getFile(), actions);
}
}
}
public static void checkForUnexpectedErrors() {
DirectiveBasedActionUtils.INSTANCE$.checkForUnexpectedErrors((KtFile) getFile());
DirectiveBasedActionUtils.INSTANCE.checkForUnexpectedErrors((KtFile) getFile());
}
@Override