blob: f26b5277ec1e6818ef073a7394fc334c734662d8 [file]
package com.intellij.coverage;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.JDOMExternalizable;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.rt.coverage.data.ProjectData;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
/**
* @author Roman.Chernyatchik
*/
public interface CoverageSuite extends JDOMExternalizable {
boolean isValid();
@NotNull
String getCoverageDataFileName();
String getPresentableName();
long getLastCoverageTimeStamp();
@NotNull
CoverageFileProvider getCoverageDataFileProvider();
boolean isCoverageByTestApplicable();
boolean isCoverageByTestEnabled();
@Nullable
ProjectData getCoverageData(CoverageDataManager coverageDataManager);
void setCoverageData(final ProjectData projectData);
void restoreCoverageData();
boolean isTrackTestFolders();
boolean isTracingEnabled();
CoverageRunner getRunner();
@NotNull
CoverageEngine getCoverageEngine();
Project getProject();
/**
* @return true if engine can provide means to remove coverage data
*/
default boolean canRemove() {
CoverageFileProvider provider = getCoverageDataFileProvider();
return provider instanceof DefaultCoverageFileProvider && Comparing.strEqual(((DefaultCoverageFileProvider)provider).getSourceProvider(),
DefaultCoverageFileProvider.class.getName());
}
/**
* Called to cleanup gathered coverage on explicit user's action in settings dialog or e.g. during rerun of the same configuration
*/
default void deleteCachedCoverageData() {
final String fileName = getCoverageDataFileName();
if (!FileUtil.isAncestor(PathManager.getSystemPath(), fileName, false)) {
String message = "Would you like to delete file \'" + fileName + "\' " + "on disk?";
if (Messages.showYesNoDialog(getProject(), message, CoverageBundle.message("delete.file"), Messages.getWarningIcon()) != Messages.YES) {
return;
}
}
File file = new File(fileName);
if (file.exists()) {
FileUtil.delete(file);
}
getCoverageEngine().deleteAssociatedTraces(this);
}
}