[coverage] Fix old API usages: delegate to new methods if possible

GitOrigin-RevId: 53ab41c4c0e821907a8fb11980c70ab494c1f67d
This commit is contained in:
Maksim Zuev
2025-05-21 17:06:20 +02:00
committed by intellij-monorepo-bot
parent e0dce36ad2
commit 7e5166aca8
3 changed files with 35 additions and 13 deletions

View File

@@ -10,6 +10,7 @@ import com.intellij.execution.configurations.coverage.CoverageEnabledConfigurati
import com.intellij.execution.testframework.AbstractTestProxy;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.module.Module;
@@ -444,10 +445,16 @@ public abstract class CoverageEngine {
@Nullable String suiteToMerge,
boolean coverageByTestEnabled,
boolean branchCoverage,
boolean trackTestFolders, Project project
boolean trackTestFolders,
@Nullable Project project
) {
throw new AbstractMethodError(
AbstractMethodError error = new AbstractMethodError(
"Please override CoverageEngine#createCoverageSuite(String, Project, CoverageRunner, CoverageFileProvider, long) method");
if (project == null || isCalledByDelegationFromThis(error)) {
throw error;
}
Logger.getInstance(CoverageEngine.class).error(error);
return createCoverageSuite(name, project, runner, fileProvider, lastCoverageTimeStamp);
}
/**
@@ -459,7 +466,20 @@ public abstract class CoverageEngine {
@NotNull String name,
@NotNull CoverageFileProvider fileProvider,
@NotNull CoverageEnabledConfiguration config) {
throw new AbstractMethodError(
AbstractMethodError error = new AbstractMethodError(
"Please override CoverageEngine#createCoverageSuite(String, Project, CoverageRunner, CoverageFileProvider, long, CoverageEnabledConfiguration) method");
if (isCalledByDelegationFromThis(error)) {
throw error;
}
Logger.getInstance(CoverageEngine.class).error(error);
return createCoverageSuite(name, config.getConfiguration().getProject(), runner, fileProvider, config.createTimestamp(), config);
}
private static boolean isCalledByDelegationFromThis(Throwable e) {
StackTraceElement[] stackTrace = e.getStackTrace();
if (stackTrace.length < 2) return false;
StackTraceElement element = stackTrace[1];
return element.getClassName().equals(CoverageEngine.class.getName()) && element.getMethodName().equals("createCoverageSuite");
}
}

View File

@@ -74,16 +74,20 @@ abstract class CoverageIntegrationBaseTest : JavaModuleTestCase() {
private fun createCoverageFileProvider(coverageDataPath: String) =
DefaultCoverageFileProvider(File(coverageDataPath))
private fun loadCoverageSuite(coverageEngineClass: Class<out CoverageEngine>, coverageRunnerClass: Class<out CoverageRunner>,
coverageDataPath: String,
includeFilters: Array<String>?): CoverageSuitesBundle {
private fun loadCoverageSuite(
coverageEngineClass: Class<out CoverageEngine>, coverageRunnerClass: Class<out CoverageRunner>,
coverageDataPath: String, includeFilters: Array<String>?,
): CoverageSuitesBundle {
val runner = CoverageRunner.getInstance(coverageRunnerClass)
val fileProvider: CoverageFileProvider = createCoverageFileProvider(coverageDataPath)
Assert.assertTrue(File(fileProvider.coverageDataFilePath).exists())
val engine = CoverageEngine.EP_NAME.findExtensionOrFail(coverageEngineClass)
val suite: CoverageSuite = engine.createCoverageSuite(
runner, coverageDataPath, fileProvider, includeFilters,
-1, null, true, true, false, myProject)!!
val suite = if (engine is JavaCoverageEngine) {
engine.createSuite(runner, coverageDataPath, fileProvider, includeFilters, null, -1, true, true, false, project)
}
else {
engine.createCoverageSuite(coverageDataPath, project, runner, fileProvider, -1)
}
return CoverageSuitesBundle(suite)
}

View File

@@ -10,6 +10,7 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
@RunWith(JUnit4::class)
class CoverageRunConfigTest : CoverageIntegrationBaseTest() {
@Test
@@ -27,10 +28,7 @@ class CoverageRunConfigTest : CoverageIntegrationBaseTest() {
Assert.assertTrue(coverageConfig.excludePatterns.isNullOrEmpty())
Assert.assertNull(coverageConfig.currentCoverageSuite)
val suite = JavaCoverageEngine.getInstance().createCoverageSuite(coverageConfig.coverageRunner!!,
coverageConfig.name,
DefaultCoverageFileProvider(coverageConfig.coverageFilePath),
coverageConfig)
val suite = JavaCoverageEngine.getInstance().createCoverageSuite(coverageConfig)
suite as JavaCoverageSuite
Assert.assertTrue(suite.isBranchCoverage)