From 721bad235286b2a074b75dc4c7d6f29689f035f2 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 12 Dec 2014 12:39:46 +0100 Subject: [PATCH] stub for package annotator test --- plugins/coverage/coverage.iml | 6 +- .../intellij/coverage/JavaCoverageEngine.java | 4 + .../coverage/PackageAnnotatorTest.java | 92 +++++++++++++++++++ 3 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 plugins/coverage/testSrc/com/intellij/coverage/PackageAnnotatorTest.java diff --git a/plugins/coverage/coverage.iml b/plugins/coverage/coverage.iml index 79aabd8b9788..c6cf45e25c90 100644 --- a/plugins/coverage/coverage.iml +++ b/plugins/coverage/coverage.iml @@ -4,6 +4,7 @@ + @@ -31,6 +32,7 @@ + + - - + \ No newline at end of file diff --git a/plugins/coverage/src/com/intellij/coverage/JavaCoverageEngine.java b/plugins/coverage/src/com/intellij/coverage/JavaCoverageEngine.java index f4896b7695be..3366fa1c0c32 100644 --- a/plugins/coverage/src/com/intellij/coverage/JavaCoverageEngine.java +++ b/plugins/coverage/src/com/intellij/coverage/JavaCoverageEngine.java @@ -72,6 +72,10 @@ import java.util.*; public class JavaCoverageEngine extends CoverageEngine { private static final Logger LOG = Logger.getInstance(JavaCoverageEngine.class.getName()); + public static JavaCoverageEngine getInstance() { + return Extensions.findExtension(EP_NAME, JavaCoverageEngine.class); + } + @Override public boolean isApplicableTo(@Nullable final RunConfigurationBase conf) { if (conf instanceof CommonJavaRunConfigurationParameters) { diff --git a/plugins/coverage/testSrc/com/intellij/coverage/PackageAnnotatorTest.java b/plugins/coverage/testSrc/com/intellij/coverage/PackageAnnotatorTest.java new file mode 100644 index 000000000000..7998c1ac2bb0 --- /dev/null +++ b/plugins/coverage/testSrc/com/intellij/coverage/PackageAnnotatorTest.java @@ -0,0 +1,92 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.coverage; + +import com.intellij.openapi.application.PluginPathManager; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.project.ex.ProjectManagerEx; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.psi.PsiPackage; +import com.intellij.testFramework.ModuleTestCase; +import com.intellij.util.containers.hash.HashMap; + +import java.io.File; +import java.util.Map; + +/** + * @author yole + */ +public class PackageAnnotatorTest extends ModuleTestCase { + private static String getTestDataPath() { + return PluginPathManager.getPluginHomePath("coverage") + "/testData/simple"; + } + + @Override + protected void setUpProject() throws Exception { + String testDataPath = getTestDataPath(); + myProject = ProjectManagerEx.getInstanceEx().loadProject(testDataPath); + ProjectManagerEx.getInstanceEx().openTestProject(myProject); + runStartupActivities(); + } + + public void testSimple() { + File coverageFile = new File(getTestDataPath(), "simple$foo_in_simple.coverage"); + IDEACoverageRunner runner = CoverageRunner.getInstance(IDEACoverageRunner.class); + CoverageFileProvider fileProvider = new DefaultCoverageFileProvider(coverageFile); + CoverageSuite suite = + JavaCoverageEngine.getInstance().createCoverageSuite(runner, "Simple", fileProvider, null, -1, null, false, false, false); + CoverageSuitesBundle bundle = new CoverageSuitesBundle(suite); + PsiPackage psiPackage = JavaPsiFacade.getInstance(myProject).findPackage("foo"); + PackageAnnotator annotator = new PackageAnnotator(psiPackage); + PackageAnnotationConsumer consumer = new PackageAnnotationConsumer(); + annotator.annotate(bundle, consumer); + PackageAnnotator.ClassCoverageInfo fooClassCoverage = consumer.myClassCoverageInfo.get("foo.FooClass"); + assertNotNull(fooClassCoverage); + } + + private static class PackageAnnotationConsumer implements PackageAnnotator.Annotator { + private final Map myDirectoryCoverage = + new HashMap(); + private final Map myPackageCoverage = + new HashMap(); + private final Map myFlatPackageCoverage = + new HashMap(); + private final Map myClassCoverageInfo = + new HashMap(); + + public void annotateSourceDirectory(VirtualFile virtualFile, PackageAnnotator.PackageCoverageInfo packageCoverageInfo, Module module) { + myDirectoryCoverage.put(virtualFile, packageCoverageInfo); + } + + public void annotateTestDirectory(VirtualFile virtualFile, PackageAnnotator.PackageCoverageInfo packageCoverageInfo, Module module) { + myDirectoryCoverage.put(virtualFile, packageCoverageInfo); + } + + public void annotatePackage(String packageQualifiedName, PackageAnnotator.PackageCoverageInfo packageCoverageInfo) { + myPackageCoverage.put(packageQualifiedName, packageCoverageInfo); + } + + public void annotatePackage(String packageQualifiedName, PackageAnnotator.PackageCoverageInfo packageCoverageInfo, boolean flatten) { + (flatten ? myFlatPackageCoverage : myPackageCoverage).put(packageQualifiedName, packageCoverageInfo); + } + + public void annotateClass(String classQualifiedName, PackageAnnotator.ClassCoverageInfo classCoverageInfo) { + myClassCoverageInfo.put(classQualifiedName, classCoverageInfo); + } + } +} +