FIR IDE: introduce diagnostics tests bases on FIR diagnostics tests

This commit is contained in:
Ilya Kirillov
2021-04-03 15:24:12 +02:00
parent 0c77565104
commit 65ce641b22
17 changed files with 36644 additions and 149 deletions
@@ -25,6 +25,7 @@ import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.testFramework.IdeaTestUtil;
import kotlin.jvm.functions.Function0;
import org.jetbrains.annotations.NotNull;
@@ -110,17 +111,47 @@ public class PluginTestCaseBase {
switch (kind) {
case MOCK_JDK:
return mockJdk();
case MODIFIED_MOCK_JDK:
return jdkByVersion("MODIFIED MOCK", KtTestUtil.findMockJdkRtModified());
case FULL_JDK_6:
return jdkByVersion("6", KtTestUtil.getJdk6Home());
case FULL_JDK_9:
String jre9 = KtTestUtil.getJdk9Home().getPath();
VfsRootAccess.allowRootAccess(jre9);
return getSdk(jre9, "Full JDK 9");
return jdkByVersion("9", KtTestUtil.getJdk9Home());
case FULL_JDK:
return fullJdk();
case FULL_JDK_15:
return jdkByVersion("15", KtTestUtil.getJdk15Home());
default:
throw new UnsupportedOperationException(kind.toString());
}
}
@NotNull
public static LanguageLevel getLanguageLevel(@NotNull TestJdkKind kind) {
switch (kind) {
case MOCK_JDK:
return LanguageLevel.JDK_1_8;
case MODIFIED_MOCK_JDK:
return LanguageLevel.JDK_11;
case FULL_JDK_6:
return LanguageLevel.JDK_1_6;
case FULL_JDK_9:
return LanguageLevel.JDK_1_9;
case FULL_JDK:
return LanguageLevel.JDK_1_8;
case FULL_JDK_15:
return LanguageLevel.JDK_15_PREVIEW;
default:
throw new UnsupportedOperationException(kind.toString());
}
}
private static Sdk jdkByVersion(String version, File jdkDir) {
String path = jdkDir.getPath();
VfsRootAccess.allowRootAccess(path);
return getSdk(path, "Full JDK " + version);
}
public static boolean isAllFilesPresentTest(@NotNull String testName) {
return StringUtil.startsWithIgnoreCase(testName, "allFilesPresentIn");
}