LightCodeInsightTestCase: now test name can force the language level.

This commit is contained in:
Tagir Valeev
2017-04-28 13:23:42 +07:00
parent e018f574e4
commit c3dd106963
7 changed files with 36 additions and 22 deletions

View File

@@ -33,8 +33,8 @@ public class StreamApiMigrationInspectionTest extends LightQuickFixParameterized
}
@Override
protected LanguageLevel getLanguageLevel() {
return getTestName(false).contains("Java9") ? LanguageLevel.JDK_1_9 : LanguageLevel.JDK_1_8;
protected LanguageLevel getDefaultLanguageLevel() {
return LanguageLevel.JDK_1_8;
}
public void test() throws Exception { doAllTests(); }

View File

@@ -23,11 +23,8 @@ public class ExtractSetFromComparisonChainActionTest extends LightIntentionActio
public void test() throws Exception { doAllTests(); }
@Override
protected LanguageLevel getLanguageLevel() {
String name = getTestName(false);
return name.contains("Java9") ? LanguageLevel.JDK_1_9 :
name.contains("Java4") ? LanguageLevel.JDK_1_4 :
LanguageLevel.JDK_1_8;
protected LanguageLevel getDefaultLanguageLevel() {
return LanguageLevel.JDK_1_8;
}
@Override

View File

@@ -17,7 +17,6 @@ package com.intellij.codeInspection;
import com.intellij.codeInsight.daemon.quickFix.LightQuickFixParameterizedTestCase;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.testFramework.IdeaTestUtil;
import org.jetbrains.annotations.NotNull;
@@ -25,14 +24,9 @@ import org.jetbrains.annotations.NotNull;
* @author Tagir Valeev
*/
public class SimplifyOptionalCallChainsInspectionTest extends LightQuickFixParameterizedTestCase {
@Override
protected LanguageLevel getLanguageLevel() {
return getTestName(false).endsWith("Java9.java") ? LanguageLevel.JDK_1_9 : LanguageLevel.JDK_1_8;
}
@Override
protected Sdk getProjectJDK() {
return getTestName(false).endsWith("Java9.java") ? IdeaTestUtil.getMockJdk9() : IdeaTestUtil.getMockJdk18();
return IdeaTestUtil.getMockJdk9();
}
@NotNull

View File

@@ -23,10 +23,15 @@ import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.impl.JavaPsiFacadeEx;
import org.jetbrains.annotations.NotNull;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* A TestCase for single PsiFile being opened in Editor conversion. See configureXXX and checkResultXXX method docs.
*/
public abstract class LightCodeInsightTestCase extends LightPlatformCodeInsightTestCase {
private static final Pattern JDK_SELECT_PATTERN = Pattern.compile("Java([\\d.]+).java$");
public static JavaPsiFacadeEx getJavaFacade() {
return JavaPsiFacadeEx.getInstanceEx(ourProject);
}
@@ -37,7 +42,31 @@ public abstract class LightCodeInsightTestCase extends LightPlatformCodeInsightT
setLanguageLevel(getLanguageLevel());
}
/**
* Returns a language level for test. Could be overridden for specific behavior.
* <p>
* This implementation checks the test name. If it ends with JavaXYZ.java and
* XYZ is known Java version (e.g. Java1.4.java or Java9.java), then version XYZ is returned.
* Otherwise {@link #getDefaultLanguageLevel() default version} is returned.
*
* @return a project language level for test.
*/
protected LanguageLevel getLanguageLevel() {
Matcher matcher = JDK_SELECT_PATTERN.matcher(getTestName(false));
if(matcher.find()) {
LanguageLevel level = LanguageLevel.parse(matcher.group(1));
if (level != null) {
return level;
}
}
return getDefaultLanguageLevel();
}
/**
* @return default language level if it's not forced by test name
*/
protected LanguageLevel getDefaultLanguageLevel() {
return LanguageLevel.HIGHEST;
}

View File

@@ -37,19 +37,13 @@ public class WhileLoopSpinsOnFieldInspectionFixTest extends LightQuickFixParamet
}
@Override
protected LanguageLevel getLanguageLevel() {
if(getTestName(false).endsWith("Java9.java")) {
return LanguageLevel.JDK_1_9;
}
protected LanguageLevel getDefaultLanguageLevel() {
return LanguageLevel.JDK_1_8;
}
@Override
protected Sdk getProjectJDK() {
if(getTestName(false).endsWith("Java9.java")) {
return IdeaTestUtil.getMockJdk9();
}
return IdeaTestUtil.getMockJdk18();
return IdeaTestUtil.getMockJdk9();
}
public void test() throws Exception {