Files
openide/jvm/jvm-analysis-kotlin-tests-shared/testSrc/com/intellij/codeInspection/tests/kotlin/KotlinNonNlsUastUtilTest.java
Bart van Helvert c8c478bdbc [jvm] Properly enable K2 mode for K2 tests
Also ignores any failing tests

GitOrigin-RevId: db34ca3d4690285cd7ed4186c76f31e81e7fab46
2024-09-12 10:09:27 +00:00

69 lines
3.0 KiB
Java

package com.intellij.codeInspection.tests.kotlin;
import com.intellij.jvm.analysis.KotlinJvmAnalysisTestUtil;
import com.intellij.openapi.application.PathManager;
import com.intellij.psi.PsiFile;
import com.intellij.testFramework.TestDataPath;
import com.intellij.testFramework.builders.JavaModuleFixtureBuilder;
import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase;
import com.intellij.util.PathUtil;
import kotlin.KotlinVersion;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.kotlin.idea.test.ExpectedPluginModeProvider;
import org.jetbrains.kotlin.idea.test.ExpectedPluginModeProviderKt;
import org.jetbrains.uast.ULiteralExpression;
import org.junit.Assume;
import java.io.File;
import java.util.Set;
import static com.intellij.codeInspection.NonNlsUastUtil.isNonNlsStringLiteral;
import static com.intellij.jvm.analysis.internal.testFramework.JvmAnalysisTestsUastUtil.getUElementsOfTypeFromFile;
@TestDataPath("$CONTENT_ROOT/testData/codeInspection/nonNls")
public abstract class KotlinNonNlsUastUtilTest extends JavaCodeInsightFixtureTestCase implements ExpectedPluginModeProvider {
@Override
protected void setUp() throws Exception {
ExpectedPluginModeProviderKt.setUpWithKotlinPlugin(this, getTestRootDisposable(), super::setUp);
Assume.assumeTrue(KotlinVersion.CURRENT.isAtLeast(1, 2, 60));
}
@Override
protected String getBasePath() {
return KotlinJvmAnalysisTestUtil.TEST_DATA_PROJECT_RELATIVE_BASE_PATH + "/codeInspection/nonNls";
}
@Override
protected String getTestDataPath() {
return PathManager.getCommunityHomePath().replace(File.separatorChar, '/') + getBasePath();
}
@Override
protected void tuneFixture(JavaModuleFixtureBuilder moduleBuilder) {
moduleBuilder.addLibrary("annotations", PathUtil.getJarPathForClass(NonNls.class));
}
public void testNonNlsStringLiterals() {
PsiFile file = myFixture.configureByFile("NonNlsStringLiteral.kt");
Set<ULiteralExpression> expressions = getUElementsOfTypeFromFile(file, ULiteralExpression.class);
assertSize(20, expressions); // multiline string literal is processed as 4 string literals
expressions.forEach(expression -> assertTrue("\"" + expression.getSourcePsi().getText() + "\" should be a NonNls StringLiteral",
isNonNlsStringLiteral(expression)));
}
public void testPlainStringLiterals() {
PsiFile file = myFixture.configureByFile("PlainStringLiteral.kt");
Set<ULiteralExpression> expressions = getUElementsOfTypeFromFile(file, ULiteralExpression.class);
assertSize(9, expressions);
expressions.forEach(expression -> assertFalse(isNonNlsStringLiteral(expression)));
}
public void testLiteralsInNonNlsClass() {
PsiFile file = myFixture.configureByFile("LiteralsInNonNlsClass.kt");
Set<ULiteralExpression> expressions = getUElementsOfTypeFromFile(file, ULiteralExpression.class);
assertSize(8, expressions);
expressions.forEach(expression -> assertTrue(isNonNlsStringLiteral(expression)));
}
}