diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2015-07-07 18:47:35 +0200 |
---|---|---|
committer | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2015-07-09 09:24:49 +0200 |
commit | b72594be58930691eae6e91f50b3f533f19e5deb (patch) | |
tree | ad04a951e6c24440b0c483d350541de658dd71a2 | |
parent | 07bc23dd2fef8a2ab50027cf9c8602c8e7e23c41 (diff) | |
download | sonarqube-b72594be58930691eae6e91f50b3f533f19e5deb.tar.gz sonarqube-b72594be58930691eae6e91f50b3f533f19e5deb.zip |
SONAR-6677 remove coverage Decorators from batch
20 files changed, 1 insertions, 1758 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchComponents.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchComponents.java index ae4a35f7162..97f77f09076 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchComponents.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchComponents.java @@ -22,18 +22,9 @@ package org.sonar.batch.bootstrap; import com.google.common.collect.Lists; import java.util.Collection; import java.util.List; -import org.sonar.batch.compute.BranchCoverageDecorator; import org.sonar.batch.compute.CommentDensityDecorator; -import org.sonar.batch.compute.CoverageDecorator; import org.sonar.batch.compute.DirectoriesDecorator; import org.sonar.batch.compute.FilesDecorator; -import org.sonar.batch.compute.ItBranchCoverageDecorator; -import org.sonar.batch.compute.ItCoverageDecorator; -import org.sonar.batch.compute.ItLineCoverageDecorator; -import org.sonar.batch.compute.LineCoverageDecorator; -import org.sonar.batch.compute.OverallBranchCoverageDecorator; -import org.sonar.batch.compute.OverallCoverageDecorator; -import org.sonar.batch.compute.OverallLineCoverageDecorator; import org.sonar.batch.compute.UnitTestDecorator; import org.sonar.batch.cpd.CpdComponents; import org.sonar.batch.issue.tracking.IssueTracking; @@ -48,8 +39,8 @@ import org.sonar.batch.scm.ScmConfiguration; import org.sonar.batch.scm.ScmSensor; import org.sonar.batch.source.CodeColorizerSensor; import org.sonar.batch.source.LinesSensor; -import org.sonar.core.config.CorePropertyDefinitions; import org.sonar.core.component.DefaultResourceTypes; +import org.sonar.core.config.CorePropertyDefinitions; public class BatchComponents { private BatchComponents() { @@ -82,15 +73,6 @@ public class BatchComponents { // to be moved to compute engine UnitTestDecorator.class, - LineCoverageDecorator.class, - CoverageDecorator.class, - BranchCoverageDecorator.class, - ItLineCoverageDecorator.class, - ItCoverageDecorator.class, - ItBranchCoverageDecorator.class, - OverallLineCoverageDecorator.class, - OverallCoverageDecorator.class, - OverallBranchCoverageDecorator.class, CommentDensityDecorator.class, DirectoriesDecorator.class, FilesDecorator.class diff --git a/sonar-batch/src/main/java/org/sonar/batch/compute/AbstractCoverageDecorator.java b/sonar-batch/src/main/java/org/sonar/batch/compute/AbstractCoverageDecorator.java deleted file mode 100644 index 8db0fa46dfa..00000000000 --- a/sonar-batch/src/main/java/org/sonar/batch/compute/AbstractCoverageDecorator.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import java.util.Arrays; -import java.util.Collection; -import org.sonar.api.batch.Decorator; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.batch.DependedUpon; -import org.sonar.api.measures.Measure; -import org.sonar.api.measures.Metric; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Resource; -import org.sonar.api.resources.ResourceUtils; - -public abstract class AbstractCoverageDecorator implements Decorator { - - @Override - public boolean shouldExecuteOnProject(Project project) { - return true; - } - - @DependedUpon - public Collection<Metric> generatedMetrics() { - return Arrays.asList(getGeneratedMetric(), getGeneratedMetricForNewCode()); - } - - @Override - public void decorate(final Resource resource, final DecoratorContext context) { - if (shouldDecorate(resource)) { - computeMeasure(context); - computeMeasureForNewCode(context); - } - } - - protected boolean shouldDecorate(final Resource resource) { - return !ResourceUtils.isUnitTestFile(resource); - } - - private void computeMeasure(DecoratorContext context) { - if (context.getMeasure(getGeneratedMetric()) == null) { - Long elements = countElements(context); - if (elements != null && elements > 0L) { - Long coveredElements = countCoveredElements(context); - context.saveMeasure(getGeneratedMetric(), calculateCoverage(coveredElements, elements)); - } - } - } - - private void computeMeasureForNewCode(DecoratorContext context) { - if (context.getMeasure(getGeneratedMetricForNewCode()) == null) { - Measure measure = new Measure(getGeneratedMetricForNewCode()); - boolean hasValue = false; - /* TODO remove this magic number */ - for (int periodIndex = 1; periodIndex <= 5; periodIndex++) { - Long elements = countElementsForNewCode(context, periodIndex); - - if (elements != null && elements > 0L) { - long coveredElements = countCoveredElementsForNewCode(context, periodIndex); - measure.setVariation(periodIndex, calculateCoverage(coveredElements, elements)); - hasValue = true; - } - } - if (hasValue) { - context.saveMeasure(measure); - } - } - } - - private static double calculateCoverage(final long coveredLines, final long lines) { - return (100.0 * coveredLines) / lines; - } - - protected abstract Metric getGeneratedMetric(); - - protected abstract Long countElements(DecoratorContext context); - - protected abstract long countCoveredElements(DecoratorContext context); - - protected abstract Metric getGeneratedMetricForNewCode(); - - protected abstract Long countElementsForNewCode(DecoratorContext context, int periodIndex); - - protected abstract long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex); -} diff --git a/sonar-batch/src/main/java/org/sonar/batch/compute/BranchCoverageDecorator.java b/sonar-batch/src/main/java/org/sonar/batch/compute/BranchCoverageDecorator.java deleted file mode 100644 index 637ea6eea44..00000000000 --- a/sonar-batch/src/main/java/org/sonar/batch/compute/BranchCoverageDecorator.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import java.util.Collection; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.batch.DependsUpon; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.MeasureUtils; -import org.sonar.api.measures.Metric; -import org.sonar.batch.sensor.coverage.CoverageConstants; - -public final class BranchCoverageDecorator extends AbstractCoverageDecorator { - - @DependsUpon - public Collection<Metric> dependsUponMetrics() { - return CoverageConstants.BRANCH_COVERAGE_METRICS; - } - - @Override - protected Metric getGeneratedMetric() { - return CoreMetrics.BRANCH_COVERAGE; - } - - @Override - protected Long countElements(DecoratorContext context) { - return MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.CONDITIONS_TO_COVER), 0L); - } - - @Override - protected long countCoveredElements(DecoratorContext context) { - long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.UNCOVERED_CONDITIONS), 0L); - long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.CONDITIONS_TO_COVER), 0L); - - return conditions - uncoveredConditions; - } - - @Override - protected Metric getGeneratedMetricForNewCode() { - return CoreMetrics.NEW_BRANCH_COVERAGE; - } - - @Override - protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { - return MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_CONDITIONS_TO_COVER), periodIndex); - } - - @Override - protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { - long uncoveredConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_UNCOVERED_CONDITIONS), periodIndex, 0L); - long conditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_CONDITIONS_TO_COVER), periodIndex, 0L); - - return conditions - uncoveredConditions; - } -} diff --git a/sonar-batch/src/main/java/org/sonar/batch/compute/CoverageDecorator.java b/sonar-batch/src/main/java/org/sonar/batch/compute/CoverageDecorator.java deleted file mode 100644 index 7d8bed2ab61..00000000000 --- a/sonar-batch/src/main/java/org/sonar/batch/compute/CoverageDecorator.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import java.util.Collection; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.batch.DependsUpon; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.MeasureUtils; -import org.sonar.api.measures.Metric; -import org.sonar.batch.sensor.coverage.CoverageConstants; - -public final class CoverageDecorator extends AbstractCoverageDecorator { - - @DependsUpon - public Collection<Metric> usedMetrics() { - return CoverageConstants.COVERAGE_METRICS; - } - - @Override - protected Metric getGeneratedMetric() { - return CoreMetrics.COVERAGE; - } - - @Override - protected Long countElements(DecoratorContext context) { - long linesToCover = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.LINES_TO_COVER), 0L); - long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.CONDITIONS_TO_COVER), 0L); - - return linesToCover + conditions; - } - - @Override - protected long countCoveredElements(DecoratorContext context) { - long uncoveredLines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.UNCOVERED_LINES), 0L); - long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.LINES_TO_COVER), 0L); - long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.UNCOVERED_CONDITIONS), 0L); - long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.CONDITIONS_TO_COVER), 0L); - - return lines + conditions - uncoveredConditions - uncoveredLines; - } - - @Override - protected Metric getGeneratedMetricForNewCode() { - return CoreMetrics.NEW_COVERAGE; - } - - @Override - protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { - Long newLinesToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_LINES_TO_COVER), periodIndex); - if (newLinesToCover == null) { - return null; - } - - long newConditionsToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_CONDITIONS_TO_COVER), periodIndex, 0L); - - return newLinesToCover + newConditionsToCover; - } - - @Override - protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { - long newLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_LINES_TO_COVER), periodIndex, 0L); - long newUncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_UNCOVERED_LINES), periodIndex, 0L); - long newUncoveredConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_UNCOVERED_CONDITIONS), periodIndex, 0L); - long newConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_CONDITIONS_TO_COVER), periodIndex, 0L); - - return newLines + newConditions - newUncoveredConditions - newUncoveredLines; - } -} diff --git a/sonar-batch/src/main/java/org/sonar/batch/compute/ItBranchCoverageDecorator.java b/sonar-batch/src/main/java/org/sonar/batch/compute/ItBranchCoverageDecorator.java deleted file mode 100644 index 926a34df070..00000000000 --- a/sonar-batch/src/main/java/org/sonar/batch/compute/ItBranchCoverageDecorator.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import com.google.common.collect.ImmutableList; -import java.util.List; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.batch.DependsUpon; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.MeasureUtils; -import org.sonar.api.measures.Metric; - -public final class ItBranchCoverageDecorator extends AbstractCoverageDecorator { - - @DependsUpon - public List<Metric> dependsUponMetrics() { - return ImmutableList.<Metric>of(CoreMetrics.IT_UNCOVERED_CONDITIONS, CoreMetrics.IT_CONDITIONS_TO_COVER, - CoreMetrics.NEW_IT_UNCOVERED_CONDITIONS, CoreMetrics.NEW_IT_CONDITIONS_TO_COVER); - } - - @Override - protected Metric getGeneratedMetric() { - return CoreMetrics.IT_BRANCH_COVERAGE; - } - - @Override - protected Long countElements(DecoratorContext context) { - return MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_CONDITIONS_TO_COVER), 0L); - } - - @Override - protected long countCoveredElements(DecoratorContext context) { - long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_UNCOVERED_CONDITIONS), 0L); - long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_CONDITIONS_TO_COVER), 0L); - - return conditions - uncoveredConditions; - } - - @Override - protected Metric getGeneratedMetricForNewCode() { - return CoreMetrics.NEW_IT_BRANCH_COVERAGE; - } - - @Override - protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { - return MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_CONDITIONS_TO_COVER), periodIndex); - } - - @Override - protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { - long uncoveredConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_UNCOVERED_CONDITIONS), periodIndex, 0L); - long conditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_CONDITIONS_TO_COVER), periodIndex, 0L); - - return conditions - uncoveredConditions; - } -} diff --git a/sonar-batch/src/main/java/org/sonar/batch/compute/ItCoverageDecorator.java b/sonar-batch/src/main/java/org/sonar/batch/compute/ItCoverageDecorator.java deleted file mode 100644 index 4d99b759170..00000000000 --- a/sonar-batch/src/main/java/org/sonar/batch/compute/ItCoverageDecorator.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import com.google.common.collect.ImmutableList; -import java.util.Collection; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.batch.DependsUpon; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.MeasureUtils; -import org.sonar.api.measures.Metric; - -public final class ItCoverageDecorator extends AbstractCoverageDecorator { - - @DependsUpon - public Collection<Metric> usedMetrics() { - return ImmutableList.<Metric>of(CoreMetrics.IT_LINES_TO_COVER, CoreMetrics.IT_UNCOVERED_LINES, CoreMetrics.NEW_IT_LINES_TO_COVER, - CoreMetrics.NEW_IT_UNCOVERED_LINES, CoreMetrics.IT_CONDITIONS_TO_COVER, CoreMetrics.IT_UNCOVERED_CONDITIONS, - CoreMetrics.NEW_IT_CONDITIONS_TO_COVER, CoreMetrics.NEW_IT_UNCOVERED_CONDITIONS); - } - - @Override - protected Metric getGeneratedMetric() { - return CoreMetrics.IT_COVERAGE; - } - - @Override - protected Long countElements(DecoratorContext context) { - long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_LINES_TO_COVER), 0L); - long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_CONDITIONS_TO_COVER), 0L); - - return lines + conditions; - } - - @Override - protected long countCoveredElements(DecoratorContext context) { - long uncoveredLines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_UNCOVERED_LINES), 0L); - long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_LINES_TO_COVER), 0L); - long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_UNCOVERED_CONDITIONS), 0L); - long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_CONDITIONS_TO_COVER), 0L); - - return lines + conditions - uncoveredConditions - uncoveredLines; - } - - @Override - protected Metric getGeneratedMetricForNewCode() { - return CoreMetrics.NEW_IT_COVERAGE; - } - - @Override - protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { - Long newLinesToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_LINES_TO_COVER), periodIndex); - if (newLinesToCover == null) { - return null; - } - - long newConditionsToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_CONDITIONS_TO_COVER), periodIndex, 0L); - return newLinesToCover + newConditionsToCover; - } - - @Override - protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { - long newLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_LINES_TO_COVER), periodIndex, 0L); - long newUncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_UNCOVERED_LINES), periodIndex, 0L); - long newUncoveredConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_UNCOVERED_CONDITIONS), periodIndex, 0L); - long newConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_CONDITIONS_TO_COVER), periodIndex, 0L); - - return newLines + newConditions - newUncoveredConditions - newUncoveredLines; - } -} diff --git a/sonar-batch/src/main/java/org/sonar/batch/compute/ItLineCoverageDecorator.java b/sonar-batch/src/main/java/org/sonar/batch/compute/ItLineCoverageDecorator.java deleted file mode 100644 index dddddd0aac4..00000000000 --- a/sonar-batch/src/main/java/org/sonar/batch/compute/ItLineCoverageDecorator.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import com.google.common.collect.ImmutableList; -import java.util.List; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.batch.DependsUpon; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.MeasureUtils; -import org.sonar.api.measures.Metric; - -public final class ItLineCoverageDecorator extends AbstractCoverageDecorator { - - @DependsUpon - public List<Metric> dependsUponMetrics() { - return ImmutableList.<Metric>of(CoreMetrics.IT_UNCOVERED_LINES, CoreMetrics.IT_LINES_TO_COVER, CoreMetrics.NEW_IT_UNCOVERED_LINES, - CoreMetrics.NEW_IT_LINES_TO_COVER); - } - - @Override - protected Metric getGeneratedMetric() { - return CoreMetrics.IT_LINE_COVERAGE; - } - - @Override - protected Long countElements(DecoratorContext context) { - return MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_LINES_TO_COVER), 0L); - } - - @Override - protected long countCoveredElements(DecoratorContext context) { - long uncoveredLines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_UNCOVERED_LINES), 0L); - long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.IT_LINES_TO_COVER), 0L); - - return lines - uncoveredLines; - } - - @Override - protected Metric getGeneratedMetricForNewCode() { - return CoreMetrics.NEW_IT_LINE_COVERAGE; - } - - @Override - protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { - return MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_LINES_TO_COVER), periodIndex); - } - - @Override - protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { - long uncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_UNCOVERED_LINES), periodIndex, 0L); - long lines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_IT_LINES_TO_COVER), periodIndex, 0L); - - return lines - uncoveredLines; - } -} diff --git a/sonar-batch/src/main/java/org/sonar/batch/compute/LineCoverageDecorator.java b/sonar-batch/src/main/java/org/sonar/batch/compute/LineCoverageDecorator.java deleted file mode 100644 index 71c6a034ac6..00000000000 --- a/sonar-batch/src/main/java/org/sonar/batch/compute/LineCoverageDecorator.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import java.util.Collection; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.batch.DependsUpon; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.MeasureUtils; -import org.sonar.api.measures.Metric; -import org.sonar.batch.sensor.coverage.CoverageConstants; - -public final class LineCoverageDecorator extends AbstractCoverageDecorator { - - @DependsUpon - public Collection<Metric> dependsUponMetrics() { - return CoverageConstants.LINE_COVERAGE_METRICS; - } - - @Override - protected Metric getGeneratedMetric() { - return CoreMetrics.LINE_COVERAGE; - } - - @Override - protected Long countElements(DecoratorContext context) { - return MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.LINES_TO_COVER), 0L); - } - - @Override - protected long countCoveredElements(DecoratorContext context) { - long uncoveredLines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.UNCOVERED_LINES), 0L); - long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.LINES_TO_COVER), 0L); - - return lines - uncoveredLines; - } - - @Override - protected Metric getGeneratedMetricForNewCode() { - return CoreMetrics.NEW_LINE_COVERAGE; - } - - @Override - protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { - return MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_LINES_TO_COVER), periodIndex); - } - - @Override - protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { - long uncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_UNCOVERED_LINES), periodIndex, 0L); - long lines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_LINES_TO_COVER), periodIndex, 0L); - - return lines - uncoveredLines; - } -} diff --git a/sonar-batch/src/main/java/org/sonar/batch/compute/OverallBranchCoverageDecorator.java b/sonar-batch/src/main/java/org/sonar/batch/compute/OverallBranchCoverageDecorator.java deleted file mode 100644 index 271cfcd795f..00000000000 --- a/sonar-batch/src/main/java/org/sonar/batch/compute/OverallBranchCoverageDecorator.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import com.google.common.collect.ImmutableList; -import java.util.List; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.batch.DependsUpon; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.MeasureUtils; -import org.sonar.api.measures.Metric; - -public final class OverallBranchCoverageDecorator extends AbstractCoverageDecorator { - - @DependsUpon - public List<Metric> dependsUponMetrics() { - return ImmutableList.<Metric>of(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS, CoreMetrics.OVERALL_CONDITIONS_TO_COVER, - CoreMetrics.NEW_OVERALL_UNCOVERED_CONDITIONS, CoreMetrics.NEW_OVERALL_CONDITIONS_TO_COVER); - } - - @Override - protected Metric getGeneratedMetric() { - return CoreMetrics.OVERALL_BRANCH_COVERAGE; - } - - @Override - protected Long countElements(DecoratorContext context) { - return MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER), 0L); - } - - @Override - protected long countCoveredElements(DecoratorContext context) { - long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS), 0L); - long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER), 0L); - - return conditions - uncoveredConditions; - } - - @Override - protected Metric getGeneratedMetricForNewCode() { - return CoreMetrics.NEW_OVERALL_BRANCH_COVERAGE; - } - - @Override - protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { - return MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_OVERALL_CONDITIONS_TO_COVER), periodIndex); - } - - @Override - protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { - long uncoveredConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_OVERALL_UNCOVERED_CONDITIONS), periodIndex, 0L); - long conditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_OVERALL_CONDITIONS_TO_COVER), periodIndex, 0L); - - return conditions - uncoveredConditions; - } -} diff --git a/sonar-batch/src/main/java/org/sonar/batch/compute/OverallCoverageDecorator.java b/sonar-batch/src/main/java/org/sonar/batch/compute/OverallCoverageDecorator.java deleted file mode 100644 index c4a4d037770..00000000000 --- a/sonar-batch/src/main/java/org/sonar/batch/compute/OverallCoverageDecorator.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import com.google.common.collect.ImmutableList; -import java.util.Collection; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.batch.DependsUpon; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.MeasureUtils; -import org.sonar.api.measures.Metric; - -public final class OverallCoverageDecorator extends AbstractCoverageDecorator { - - @DependsUpon - public Collection<Metric> usedMetrics() { - return ImmutableList.<Metric>of(CoreMetrics.OVERALL_LINES_TO_COVER, CoreMetrics.OVERALL_UNCOVERED_LINES, CoreMetrics.NEW_OVERALL_LINES_TO_COVER, - CoreMetrics.NEW_OVERALL_UNCOVERED_LINES, CoreMetrics.OVERALL_CONDITIONS_TO_COVER, CoreMetrics.OVERALL_UNCOVERED_CONDITIONS, - CoreMetrics.NEW_OVERALL_CONDITIONS_TO_COVER, CoreMetrics.NEW_OVERALL_UNCOVERED_CONDITIONS); - } - - @Override - protected Metric getGeneratedMetric() { - return CoreMetrics.OVERALL_COVERAGE; - } - - @Override - protected Long countElements(DecoratorContext context) { - long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.OVERALL_LINES_TO_COVER), 0L); - long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER), 0L); - - return lines + conditions; - } - - @Override - protected long countCoveredElements(DecoratorContext context) { - long uncoveredLines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.OVERALL_UNCOVERED_LINES), 0L); - long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.OVERALL_LINES_TO_COVER), 0L); - long uncoveredConditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS), 0L); - long conditions = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER), 0L); - - return lines + conditions - uncoveredConditions - uncoveredLines; - } - - @Override - protected Metric getGeneratedMetricForNewCode() { - return CoreMetrics.NEW_OVERALL_COVERAGE; - } - - @Override - protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { - Long newLinesToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_OVERALL_LINES_TO_COVER), periodIndex); - if (newLinesToCover == null) { - return null; - } - - long newConditionsToCover = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_OVERALL_CONDITIONS_TO_COVER), periodIndex, 0L); - - return newLinesToCover + newConditionsToCover; - } - - @Override - protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { - long newLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_OVERALL_LINES_TO_COVER), periodIndex, 0L); - long newUncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_OVERALL_UNCOVERED_LINES), periodIndex, 0L); - long newUncoveredConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_OVERALL_UNCOVERED_CONDITIONS), periodIndex, 0L); - long newConditions = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_OVERALL_CONDITIONS_TO_COVER), periodIndex, 0L); - - return newLines + newConditions - newUncoveredConditions - newUncoveredLines; - } -} diff --git a/sonar-batch/src/main/java/org/sonar/batch/compute/OverallLineCoverageDecorator.java b/sonar-batch/src/main/java/org/sonar/batch/compute/OverallLineCoverageDecorator.java deleted file mode 100644 index a41440e6314..00000000000 --- a/sonar-batch/src/main/java/org/sonar/batch/compute/OverallLineCoverageDecorator.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import com.google.common.collect.ImmutableList; -import java.util.List; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.batch.DependsUpon; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.MeasureUtils; -import org.sonar.api.measures.Metric; - -public final class OverallLineCoverageDecorator extends AbstractCoverageDecorator { - - @DependsUpon - public List<Metric> dependsUponMetrics() { - return ImmutableList.<Metric>of(CoreMetrics.OVERALL_UNCOVERED_LINES, CoreMetrics.OVERALL_LINES_TO_COVER, CoreMetrics.NEW_OVERALL_UNCOVERED_LINES, - CoreMetrics.NEW_OVERALL_LINES_TO_COVER); - } - - @Override - protected Metric getGeneratedMetric() { - return CoreMetrics.OVERALL_LINE_COVERAGE; - } - - @Override - protected Long countElements(DecoratorContext context) { - return MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.OVERALL_LINES_TO_COVER), 0L); - } - - @Override - protected long countCoveredElements(DecoratorContext context) { - long uncoveredLines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.OVERALL_UNCOVERED_LINES), 0L); - long lines = MeasureUtils.getValueAsLong(context.getMeasure(CoreMetrics.OVERALL_LINES_TO_COVER), 0L); - - return lines - uncoveredLines; - } - - @Override - protected Metric getGeneratedMetricForNewCode() { - return CoreMetrics.NEW_OVERALL_LINE_COVERAGE; - } - - @Override - protected Long countElementsForNewCode(DecoratorContext context, int periodIndex) { - return MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_OVERALL_LINES_TO_COVER), periodIndex); - } - - @Override - protected long countCoveredElementsForNewCode(DecoratorContext context, int periodIndex) { - long uncoveredLines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_OVERALL_UNCOVERED_LINES), periodIndex, 0L); - long lines = MeasureUtils.getVariationAsLong(context.getMeasure(CoreMetrics.NEW_OVERALL_LINES_TO_COVER), periodIndex, 0L); - - return lines - uncoveredLines; - } -} diff --git a/sonar-batch/src/test/java/org/sonar/batch/compute/BranchCoverageDecoratorTest.java b/sonar-batch/src/test/java/org/sonar/batch/compute/BranchCoverageDecoratorTest.java deleted file mode 100644 index a7f9e098376..00000000000 --- a/sonar-batch/src/test/java/org/sonar/batch/compute/BranchCoverageDecoratorTest.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import org.junit.Before; -import org.junit.Test; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.Measure; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Qualifiers; -import org.sonar.api.resources.Scopes; - -import static org.mockito.Matchers.anyDouble; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class BranchCoverageDecoratorTest { - private final BranchCoverageDecorator decorator = new BranchCoverageDecorator(); - private final Project resource = mock(Project.class); - - @Before - public void setUp() { - when(resource.getScope()).thenReturn(Scopes.PROJECT); - when(resource.getQualifier()).thenReturn(Qualifiers.PROJECT); - } - - @Test - public void shouldSaveBranchCoverage() { - DecoratorContext context = mockContext(20, 15); - - decorator.decorate(resource, context); - - verify(context).saveMeasure(CoreMetrics.BRANCH_COVERAGE, 25.0); - } - - @Test - public void shouldNotSaveBranchCoverageIfMissingConditions() { - DecoratorContext context = mock(DecoratorContext.class); - - decorator.decorate(resource, context); - - verify(context, never()).saveMeasure(eq(CoreMetrics.BRANCH_COVERAGE), anyDouble()); - } - - private static DecoratorContext mockContext(int conditions, int uncoveredConditions) { - DecoratorContext context = mock(DecoratorContext.class); - when(context.getMeasure(CoreMetrics.CONDITIONS_TO_COVER)).thenReturn(new Measure(CoreMetrics.CONDITIONS_TO_COVER, (double) conditions)); - when(context.getMeasure(CoreMetrics.UNCOVERED_CONDITIONS)).thenReturn(new Measure(CoreMetrics.UNCOVERED_CONDITIONS, (double) uncoveredConditions)); - return context; - } -} diff --git a/sonar-batch/src/test/java/org/sonar/batch/compute/CoverageDecoratorTest.java b/sonar-batch/src/test/java/org/sonar/batch/compute/CoverageDecoratorTest.java deleted file mode 100644 index 5994f3e72e6..00000000000 --- a/sonar-batch/src/test/java/org/sonar/batch/compute/CoverageDecoratorTest.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import java.util.Collection; -import org.junit.Before; -import org.junit.Test; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.Measure; -import org.sonar.api.measures.Metric; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Scopes; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Matchers.anyDouble; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class CoverageDecoratorTest { - private CoverageDecorator decorator; - private final Project project = mock(Project.class); - - @Before - public void before() { - when(project.getScope()).thenReturn(Scopes.PROJECT); - decorator = new CoverageDecorator(); - } - - @Test - public void should_use_metrics() { - Collection<Metric> metrics = decorator.usedMetrics(); - - assertThat(metrics).containsOnly(CoreMetrics.LINES_TO_COVER, CoreMetrics.UNCOVERED_LINES, CoreMetrics.NEW_LINES_TO_COVER, - CoreMetrics.NEW_UNCOVERED_LINES, CoreMetrics.CONDITIONS_TO_COVER, CoreMetrics.UNCOVERED_CONDITIONS, - CoreMetrics.NEW_CONDITIONS_TO_COVER, CoreMetrics.NEW_UNCOVERED_CONDITIONS); - } - - @Test - public void coverage() { - DecoratorContext context = mockContext(50, 40, 10, 8); - - decorator.decorate(project, context); - - // (50-40 covered lines + 10-8 covered conditions) / (50 lines + 10 conditions) - verify(context).saveMeasure(CoreMetrics.COVERAGE, 20.0); - } - - @Test - public void coverageCanBe0() { - DecoratorContext context = mockContext(50, 50, 5, 5); - - decorator.decorate(project, context); - - verify(context).saveMeasure(CoreMetrics.COVERAGE, 0.0); - } - - @Test - public void coverageCanBe100() { - DecoratorContext context = mockContext(50, 0, 5, 0); - - decorator.decorate(project, context); - - verify(context).saveMeasure(CoreMetrics.COVERAGE, 100.0); - } - - @Test - public void noCoverageIfNoElements() { - DecoratorContext context = mock(DecoratorContext.class); - - decorator.decorate(project, context); - - verify(context, never()).saveMeasure(eq(CoreMetrics.COVERAGE), anyDouble()); - } - - @Test - public void should_count_elements_for_new_code() { - Measure newLines = measureWithVariation(1, 100.0); - Measure newConditions = measureWithVariation(1, 1.0); - DecoratorContext context = mockNewContext(newLines, null, null, newConditions); - - long count = decorator.countElementsForNewCode(context, 1); - - assertThat(count).isEqualTo(101).isEqualTo(100 + 1); - } - - @Test - public void should_count_covered_elements_for_new_code() { - Measure newLines = measureWithVariation(1, 100.0); - Measure newUncoveredConditions = measureWithVariation(1, 10.0); - Measure newUncoveredLines = measureWithVariation(1, 5.0); - Measure newConditions = measureWithVariation(1, 1.0); - DecoratorContext context = mockNewContext(newLines, newUncoveredConditions, newUncoveredLines, newConditions); - - long count = decorator.countCoveredElementsForNewCode(context, 1); - - assertThat(count).isEqualTo(86).isEqualTo(100 + 1 - 10 - 5); - } - - private static DecoratorContext mockContext(int lines, int uncoveredLines, int conditions, int uncoveredConditions) { - DecoratorContext context = mock(DecoratorContext.class); - when(context.getMeasure(CoreMetrics.LINES_TO_COVER)).thenReturn(new Measure(CoreMetrics.LINES_TO_COVER, (double) lines)); - when(context.getMeasure(CoreMetrics.UNCOVERED_LINES)).thenReturn(new Measure(CoreMetrics.UNCOVERED_LINES, (double) uncoveredLines)); - when(context.getMeasure(CoreMetrics.CONDITIONS_TO_COVER)).thenReturn(new Measure(CoreMetrics.CONDITIONS_TO_COVER, (double) conditions)); - when(context.getMeasure(CoreMetrics.UNCOVERED_CONDITIONS)).thenReturn(new Measure(CoreMetrics.UNCOVERED_CONDITIONS, (double) uncoveredConditions)); - return context; - } - - private static DecoratorContext mockNewContext(Measure newLines, Measure newUncoveredConditions, Measure newUncoveredLines, Measure newConditions) { - DecoratorContext context = mock(DecoratorContext.class); - when(context.getMeasure(CoreMetrics.NEW_LINES_TO_COVER)).thenReturn(newLines); - when(context.getMeasure(CoreMetrics.NEW_UNCOVERED_LINES)).thenReturn(newUncoveredLines); - when(context.getMeasure(CoreMetrics.NEW_UNCOVERED_CONDITIONS)).thenReturn(newUncoveredConditions); - when(context.getMeasure(CoreMetrics.NEW_CONDITIONS_TO_COVER)).thenReturn(newConditions); - return context; - } - - private static Measure measureWithVariation(int period, double variation) { - Measure measure = mock(Measure.class); - when(measure.getVariation(period)).thenReturn(variation); - return measure; - } -} diff --git a/sonar-batch/src/test/java/org/sonar/batch/compute/ItBranchCoverageDecoratorTest.java b/sonar-batch/src/test/java/org/sonar/batch/compute/ItBranchCoverageDecoratorTest.java deleted file mode 100644 index 0e5b70a37e3..00000000000 --- a/sonar-batch/src/test/java/org/sonar/batch/compute/ItBranchCoverageDecoratorTest.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import org.junit.Before; -import org.junit.Test; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.Measure; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Qualifiers; -import org.sonar.api.resources.Scopes; - -import static org.mockito.Matchers.anyDouble; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class ItBranchCoverageDecoratorTest { - private final ItBranchCoverageDecorator decorator = new ItBranchCoverageDecorator(); - private final Project resource = mock(Project.class); - - @Before - public void setUp() { - when(resource.getScope()).thenReturn(Scopes.PROJECT); - when(resource.getQualifier()).thenReturn(Qualifiers.PROJECT); - } - - @Test - public void shouldSaveBranchCoverage() { - DecoratorContext context = mockContext(20, 15); - - decorator.decorate(resource, context); - - verify(context).saveMeasure(CoreMetrics.IT_BRANCH_COVERAGE, 25.0); - } - - @Test - public void shouldNotSaveBranchCoverageIfMissingConditions() { - DecoratorContext context = mock(DecoratorContext.class); - - decorator.decorate(resource, context); - - verify(context, never()).saveMeasure(eq(CoreMetrics.IT_BRANCH_COVERAGE), anyDouble()); - } - - private static DecoratorContext mockContext(int conditions, int uncoveredConditions) { - DecoratorContext context = mock(DecoratorContext.class); - when(context.getMeasure(CoreMetrics.IT_CONDITIONS_TO_COVER)).thenReturn(new Measure(CoreMetrics.IT_CONDITIONS_TO_COVER, (double) conditions)); - when(context.getMeasure(CoreMetrics.IT_UNCOVERED_CONDITIONS)).thenReturn(new Measure(CoreMetrics.IT_UNCOVERED_CONDITIONS, (double) uncoveredConditions)); - return context; - } -} diff --git a/sonar-batch/src/test/java/org/sonar/batch/compute/ItCoverageDecoratorTest.java b/sonar-batch/src/test/java/org/sonar/batch/compute/ItCoverageDecoratorTest.java deleted file mode 100644 index 839577fb1aa..00000000000 --- a/sonar-batch/src/test/java/org/sonar/batch/compute/ItCoverageDecoratorTest.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import java.util.Collection; -import org.junit.Before; -import org.junit.Test; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.Measure; -import org.sonar.api.measures.Metric; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Scopes; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Matchers.anyDouble; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class ItCoverageDecoratorTest { - private final ItCoverageDecorator decorator = new ItCoverageDecorator(); - private final Project project = mock(Project.class); - - @Before - public void before() { - when(project.getScope()).thenReturn(Scopes.PROJECT); - } - - @Test - public void should_use_metrics() { - Collection<Metric> metrics = decorator.usedMetrics(); - - assertThat(metrics).containsOnly(CoreMetrics.IT_LINES_TO_COVER, CoreMetrics.IT_UNCOVERED_LINES, CoreMetrics.NEW_IT_LINES_TO_COVER, - CoreMetrics.NEW_IT_UNCOVERED_LINES, CoreMetrics.IT_CONDITIONS_TO_COVER, CoreMetrics.IT_UNCOVERED_CONDITIONS, - CoreMetrics.NEW_IT_CONDITIONS_TO_COVER, CoreMetrics.NEW_IT_UNCOVERED_CONDITIONS); - } - - @Test - public void coverage() { - DecoratorContext context = mockContext(50, 40, 10, 8); - - decorator.decorate(project, context); - - // (50-40 covered lines + 10-8 covered conditions) / (50 lines + 10 conditions) - verify(context).saveMeasure(CoreMetrics.IT_COVERAGE, 20.0); - } - - @Test - public void coverageCanBe0() { - DecoratorContext context = mockContext(50, 50, 5, 5); - - decorator.decorate(project, context); - - verify(context).saveMeasure(CoreMetrics.IT_COVERAGE, 0.0); - } - - @Test - public void coverageCanBe100() { - DecoratorContext context = mockContext(50, 0, 5, 0); - - decorator.decorate(project, context); - - verify(context).saveMeasure(CoreMetrics.IT_COVERAGE, 100.0); - } - - @Test - public void noCoverageIfNoElements() { - DecoratorContext context = mock(DecoratorContext.class); - - decorator.decorate(project, context); - - verify(context, never()).saveMeasure(eq(CoreMetrics.IT_COVERAGE), anyDouble()); - } - - @Test - public void should_count_elements_for_new_code() { - Measure newLines = measureWithVariation(1, 100.0); - Measure newConditions = measureWithVariation(1, 1.0); - DecoratorContext context = mockNewContext(newLines, null, null, newConditions); - - long count = decorator.countElementsForNewCode(context, 1); - - assertThat(count).isEqualTo(101).isEqualTo(100 + 1); - } - - @Test - public void should_count_covered_elements_for_new_code() { - Measure newLines = measureWithVariation(1, 100.0); - Measure newUncoveredConditions = measureWithVariation(1, 10.0); - Measure newUncoveredLines = measureWithVariation(1, 5.0); - Measure newConditions = measureWithVariation(1, 1.0); - DecoratorContext context = mockNewContext(newLines, newUncoveredConditions, newUncoveredLines, newConditions); - - long count = decorator.countCoveredElementsForNewCode(context, 1); - - assertThat(count).isEqualTo(86).isEqualTo(100 + 1 - 10 - 5); - } - - private static DecoratorContext mockContext(int lines, int uncoveredLines, int conditions, int uncoveredConditions) { - DecoratorContext context = mock(DecoratorContext.class); - when(context.getMeasure(CoreMetrics.IT_LINES_TO_COVER)).thenReturn(new Measure(CoreMetrics.IT_LINES_TO_COVER, (double) lines)); - when(context.getMeasure(CoreMetrics.IT_UNCOVERED_LINES)).thenReturn(new Measure(CoreMetrics.IT_UNCOVERED_LINES, (double) uncoveredLines)); - when(context.getMeasure(CoreMetrics.IT_CONDITIONS_TO_COVER)).thenReturn(new Measure(CoreMetrics.IT_CONDITIONS_TO_COVER, (double) conditions)); - when(context.getMeasure(CoreMetrics.IT_UNCOVERED_CONDITIONS)).thenReturn(new Measure(CoreMetrics.IT_UNCOVERED_CONDITIONS, (double) uncoveredConditions)); - return context; - } - - private static DecoratorContext mockNewContext(Measure newLines, Measure newUncoveredConditions, Measure newUncoveredLines, Measure newConditions) { - DecoratorContext context = mock(DecoratorContext.class); - when(context.getMeasure(CoreMetrics.NEW_IT_LINES_TO_COVER)).thenReturn(newLines); - when(context.getMeasure(CoreMetrics.NEW_IT_UNCOVERED_LINES)).thenReturn(newUncoveredLines); - when(context.getMeasure(CoreMetrics.NEW_IT_UNCOVERED_CONDITIONS)).thenReturn(newUncoveredConditions); - when(context.getMeasure(CoreMetrics.NEW_IT_CONDITIONS_TO_COVER)).thenReturn(newConditions); - return context; - } - - private static Measure measureWithVariation(int period, double variation) { - Measure measure = mock(Measure.class); - when(measure.getVariation(period)).thenReturn(variation); - return measure; - } -} diff --git a/sonar-batch/src/test/java/org/sonar/batch/compute/ItLineCoverageDecoratorTest.java b/sonar-batch/src/test/java/org/sonar/batch/compute/ItLineCoverageDecoratorTest.java deleted file mode 100644 index 95e7177b840..00000000000 --- a/sonar-batch/src/test/java/org/sonar/batch/compute/ItLineCoverageDecoratorTest.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import java.util.List; -import org.junit.Before; -import org.junit.Test; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.Measure; -import org.sonar.api.measures.Metric; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Scopes; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Matchers.anyDouble; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class ItLineCoverageDecoratorTest { - private final ItLineCoverageDecorator decorator = new ItLineCoverageDecorator(); - private final Project project = mock(Project.class); - - @Before - public void before() { - when(project.getScope()).thenReturn(Scopes.PROJECT); - } - - @Test - public void should_depend_on_coverage_metrics() { - List<Metric> metrics = decorator.dependsUponMetrics(); - - assertThat(metrics).containsOnly(CoreMetrics.IT_UNCOVERED_LINES, CoreMetrics.IT_LINES_TO_COVER, CoreMetrics.NEW_IT_UNCOVERED_LINES, CoreMetrics.NEW_IT_LINES_TO_COVER); - } - - @Test - public void lineCoverage() { - DecoratorContext context = mockContext(50, 10); - - decorator.decorate(project, context); - - // 50-10 covered lines / 50 lines - verify(context).saveMeasure(CoreMetrics.IT_LINE_COVERAGE, 80.0); - } - - @Test - public void zeroCoveredLines() { - DecoratorContext context = mockContext(50, 50); - - decorator.decorate(project, context); - - verify(context).saveMeasure(CoreMetrics.IT_LINE_COVERAGE, 0.0); - } - - @Test - public void allCoveredLines() { - DecoratorContext context = mockContext(50, 00); - - decorator.decorate(project, context); - - verify(context).saveMeasure(CoreMetrics.IT_LINE_COVERAGE, 100.0); - } - - @Test - public void noLineCoverageIfNoLines() { - DecoratorContext context = mock(DecoratorContext.class); - - decorator.decorate(project, context); - - verify(context, never()).saveMeasure(eq(CoreMetrics.IT_LINE_COVERAGE), anyDouble()); - } - - private static DecoratorContext mockContext(int lines, int uncoveredLines) { - DecoratorContext context = mock(DecoratorContext.class); - when(context.getMeasure(CoreMetrics.IT_LINES_TO_COVER)).thenReturn(new Measure(CoreMetrics.IT_LINES_TO_COVER, (double) lines)); - when(context.getMeasure(CoreMetrics.IT_UNCOVERED_LINES)).thenReturn(new Measure(CoreMetrics.IT_UNCOVERED_LINES, (double) uncoveredLines)); - return context; - } -} diff --git a/sonar-batch/src/test/java/org/sonar/batch/compute/LineCoverageDecoratorTest.java b/sonar-batch/src/test/java/org/sonar/batch/compute/LineCoverageDecoratorTest.java deleted file mode 100644 index 2a49f83aaf4..00000000000 --- a/sonar-batch/src/test/java/org/sonar/batch/compute/LineCoverageDecoratorTest.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import org.junit.Before; -import org.junit.Test; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.Measure; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Scopes; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Matchers.anyDouble; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class LineCoverageDecoratorTest { - - private LineCoverageDecorator decorator; - private final Project project = mock(Project.class); - - @Before - public void before() { - when(project.getScope()).thenReturn(Scopes.PROJECT); - decorator = new LineCoverageDecorator(); - } - - @Test - public void should_depend_on_coverage_metrics() { - assertThat(decorator.dependsUponMetrics()).containsOnly(CoreMetrics.UNCOVERED_LINES, CoreMetrics.LINES_TO_COVER, CoreMetrics.NEW_UNCOVERED_LINES, - CoreMetrics.NEW_LINES_TO_COVER); - } - - @Test - public void lineCoverage() { - DecoratorContext context = mockContext(50, 10); - - decorator.decorate(project, context); - - // 50-10 covered lines / 50 lines - verify(context).saveMeasure(CoreMetrics.LINE_COVERAGE, 80.0); - } - - @Test - public void zeroCoveredLines() { - DecoratorContext context = mockContext(50, 50); - - decorator.decorate(project, context); - - verify(context).saveMeasure(CoreMetrics.LINE_COVERAGE, 0.0); - } - - @Test - public void allCoveredLines() { - DecoratorContext context = mockContext(50, 00); - - decorator.decorate(project, context); - - verify(context).saveMeasure(CoreMetrics.LINE_COVERAGE, 100.0); - } - - @Test - public void noLineCoverageIfNoLines() { - DecoratorContext context = mock(DecoratorContext.class); - - decorator.decorate(project, context); - - verify(context, never()).saveMeasure(eq(CoreMetrics.LINE_COVERAGE), anyDouble()); - } - - private static DecoratorContext mockContext(int lines, int uncoveredLines) { - DecoratorContext context = mock(DecoratorContext.class); - when(context.getMeasure(CoreMetrics.LINES_TO_COVER)).thenReturn(new Measure(CoreMetrics.LINES_TO_COVER, (double) lines)); - when(context.getMeasure(CoreMetrics.UNCOVERED_LINES)).thenReturn(new Measure(CoreMetrics.UNCOVERED_LINES, (double) uncoveredLines)); - return context; - } -} diff --git a/sonar-batch/src/test/java/org/sonar/batch/compute/OverallBranchCoverageDecoratorTest.java b/sonar-batch/src/test/java/org/sonar/batch/compute/OverallBranchCoverageDecoratorTest.java deleted file mode 100644 index 9c5e585c969..00000000000 --- a/sonar-batch/src/test/java/org/sonar/batch/compute/OverallBranchCoverageDecoratorTest.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import org.junit.Before; -import org.junit.Test; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.Measure; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Qualifiers; -import org.sonar.api.resources.Scopes; - -import static org.mockito.Matchers.anyDouble; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class OverallBranchCoverageDecoratorTest { - private final OverallBranchCoverageDecorator decorator = new OverallBranchCoverageDecorator(); - private final Project resource = mock(Project.class); - - @Before - public void setUp() { - when(resource.getScope()).thenReturn(Scopes.PROJECT); - when(resource.getQualifier()).thenReturn(Qualifiers.PROJECT); - } - - @Test - public void shouldSaveBranchCoverage() { - DecoratorContext context = mockContext(20, 15); - - decorator.decorate(resource, context); - - verify(context).saveMeasure(CoreMetrics.OVERALL_BRANCH_COVERAGE, 25.0); - } - - @Test - public void shouldNotSaveBranchCoverageIfMissingConditions() { - DecoratorContext context = mock(DecoratorContext.class); - - decorator.decorate(resource, context); - - verify(context, never()).saveMeasure(eq(CoreMetrics.OVERALL_BRANCH_COVERAGE), anyDouble()); - } - - private static DecoratorContext mockContext(int conditions, int uncoveredConditions) { - DecoratorContext context = mock(DecoratorContext.class); - when(context.getMeasure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER)).thenReturn(new Measure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER, (double) conditions)); - when(context.getMeasure(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS)).thenReturn(new Measure(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS, (double) uncoveredConditions)); - return context; - } -} diff --git a/sonar-batch/src/test/java/org/sonar/batch/compute/OverallCoverageDecoratorTest.java b/sonar-batch/src/test/java/org/sonar/batch/compute/OverallCoverageDecoratorTest.java deleted file mode 100644 index d694227c754..00000000000 --- a/sonar-batch/src/test/java/org/sonar/batch/compute/OverallCoverageDecoratorTest.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import java.util.Collection; -import org.junit.Before; -import org.junit.Test; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.Measure; -import org.sonar.api.measures.Metric; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Scopes; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Matchers.anyDouble; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class OverallCoverageDecoratorTest { - private final OverallCoverageDecorator decorator = new OverallCoverageDecorator(); - private final Project project = mock(Project.class); - - @Before - public void before() { - when(project.getScope()).thenReturn(Scopes.PROJECT); - } - - @Test - public void should_use_metrics() { - Collection<Metric> metrics = decorator.usedMetrics(); - - assertThat(metrics).containsOnly(CoreMetrics.OVERALL_LINES_TO_COVER, CoreMetrics.OVERALL_UNCOVERED_LINES, CoreMetrics.NEW_OVERALL_LINES_TO_COVER, - CoreMetrics.NEW_OVERALL_UNCOVERED_LINES, CoreMetrics.OVERALL_CONDITIONS_TO_COVER, CoreMetrics.OVERALL_UNCOVERED_CONDITIONS, - CoreMetrics.NEW_OVERALL_CONDITIONS_TO_COVER, CoreMetrics.NEW_OVERALL_UNCOVERED_CONDITIONS); - } - - @Test - public void coverage() { - DecoratorContext context = mockContext(50, 40, 10, 8); - - decorator.decorate(project, context); - - // (50-40 covered lines + 10-8 covered conditions) / (50 lines + 10 conditions) - verify(context).saveMeasure(CoreMetrics.OVERALL_COVERAGE, 20.0); - } - - @Test - public void coverageCanBe0() { - DecoratorContext context = mockContext(50, 50, 5, 5); - - decorator.decorate(project, context); - - verify(context).saveMeasure(CoreMetrics.OVERALL_COVERAGE, 0.0); - } - - @Test - public void coverageCanBe100() { - DecoratorContext context = mockContext(50, 0, 5, 0); - - decorator.decorate(project, context); - - verify(context).saveMeasure(CoreMetrics.OVERALL_COVERAGE, 100.0); - } - - @Test - public void noCoverageIfNoElements() { - DecoratorContext context = mock(DecoratorContext.class); - - decorator.decorate(project, context); - - verify(context, never()).saveMeasure(eq(CoreMetrics.OVERALL_COVERAGE), anyDouble()); - } - - @Test - public void should_count_elements_for_new_code() { - Measure newLines = measureWithVariation(1, 100.0); - Measure newConditions = measureWithVariation(1, 1.0); - DecoratorContext context = mockNewContext(newLines, null, null, newConditions); - - long count = decorator.countElementsForNewCode(context, 1); - - assertThat(count).isEqualTo(101).isEqualTo(100 + 1); - } - - @Test - public void should_count_covered_elements_for_new_code() { - Measure newLines = measureWithVariation(1, 100.0); - Measure newUncoveredConditions = measureWithVariation(1, 10.0); - Measure newUncoveredLines = measureWithVariation(1, 5.0); - Measure newConditions = measureWithVariation(1, 1.0); - DecoratorContext context = mockNewContext(newLines, newUncoveredConditions, newUncoveredLines, newConditions); - - long count = decorator.countCoveredElementsForNewCode(context, 1); - - assertThat(count).isEqualTo(86).isEqualTo(100 + 1 - 10 - 5); - } - - private static DecoratorContext mockContext(int lines, int uncoveredLines, int conditions, int uncoveredConditions) { - DecoratorContext context = mock(DecoratorContext.class); - when(context.getMeasure(CoreMetrics.OVERALL_LINES_TO_COVER)).thenReturn(new Measure(CoreMetrics.OVERALL_LINES_TO_COVER, (double) lines)); - when(context.getMeasure(CoreMetrics.OVERALL_UNCOVERED_LINES)).thenReturn(new Measure(CoreMetrics.OVERALL_UNCOVERED_LINES, (double) uncoveredLines)); - when(context.getMeasure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER)).thenReturn(new Measure(CoreMetrics.OVERALL_CONDITIONS_TO_COVER, (double) conditions)); - when(context.getMeasure(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS)).thenReturn(new Measure(CoreMetrics.OVERALL_UNCOVERED_CONDITIONS, (double) uncoveredConditions)); - return context; - } - - private static DecoratorContext mockNewContext(Measure newLines, Measure newUncoveredConditions, Measure newUncoveredLines, Measure newConditions) { - DecoratorContext context = mock(DecoratorContext.class); - when(context.getMeasure(CoreMetrics.NEW_OVERALL_LINES_TO_COVER)).thenReturn(newLines); - when(context.getMeasure(CoreMetrics.NEW_OVERALL_UNCOVERED_LINES)).thenReturn(newUncoveredLines); - when(context.getMeasure(CoreMetrics.NEW_OVERALL_UNCOVERED_CONDITIONS)).thenReturn(newUncoveredConditions); - when(context.getMeasure(CoreMetrics.NEW_OVERALL_CONDITIONS_TO_COVER)).thenReturn(newConditions); - return context; - } - - private static Measure measureWithVariation(int period, double variation) { - Measure measure = mock(Measure.class); - when(measure.getVariation(period)).thenReturn(variation); - return measure; - } -} diff --git a/sonar-batch/src/test/java/org/sonar/batch/compute/OverallLineCoverageDecoratorTest.java b/sonar-batch/src/test/java/org/sonar/batch/compute/OverallLineCoverageDecoratorTest.java deleted file mode 100644 index 17d54526a35..00000000000 --- a/sonar-batch/src/test/java/org/sonar/batch/compute/OverallLineCoverageDecoratorTest.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * SonarQube, open source software quality management tool. - * Copyright (C) 2008-2014 SonarSource - * mailto:contact AT sonarsource DOT com - * - * SonarQube is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * SonarQube is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package org.sonar.batch.compute; - -import java.util.List; -import org.junit.Before; -import org.junit.Test; -import org.sonar.api.batch.DecoratorContext; -import org.sonar.api.measures.CoreMetrics; -import org.sonar.api.measures.Measure; -import org.sonar.api.measures.Metric; -import org.sonar.api.resources.Project; -import org.sonar.api.resources.Scopes; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Matchers.anyDouble; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class OverallLineCoverageDecoratorTest { - private final OverallLineCoverageDecorator decorator = new OverallLineCoverageDecorator(); - private final Project project = mock(Project.class); - - @Before - public void before() { - when(project.getScope()).thenReturn(Scopes.PROJECT); - } - - @Test - public void should_depend_on_coverage_metrics() { - List<Metric> metrics = decorator.dependsUponMetrics(); - - assertThat(metrics).containsOnly(CoreMetrics.OVERALL_UNCOVERED_LINES, CoreMetrics.OVERALL_LINES_TO_COVER, CoreMetrics.NEW_OVERALL_UNCOVERED_LINES, - CoreMetrics.NEW_OVERALL_LINES_TO_COVER); - } - - @Test - public void lineCoverage() { - DecoratorContext context = mockContext(50, 10); - - decorator.decorate(project, context); - - // 50-10 covered lines / 50 lines - verify(context).saveMeasure(CoreMetrics.OVERALL_LINE_COVERAGE, 80.0); - } - - @Test - public void zeroCoveredLines() { - DecoratorContext context = mockContext(50, 50); - - decorator.decorate(project, context); - - verify(context).saveMeasure(CoreMetrics.OVERALL_LINE_COVERAGE, 0.0); - } - - @Test - public void allCoveredLines() { - DecoratorContext context = mockContext(50, 00); - - decorator.decorate(project, context); - - verify(context).saveMeasure(CoreMetrics.OVERALL_LINE_COVERAGE, 100.0); - } - - @Test - public void noLineCoverageIfNoLines() { - DecoratorContext context = mock(DecoratorContext.class); - - decorator.decorate(project, context); - - verify(context, never()).saveMeasure(eq(CoreMetrics.OVERALL_LINE_COVERAGE), anyDouble()); - } - - private static DecoratorContext mockContext(int lines, int uncoveredLines) { - DecoratorContext context = mock(DecoratorContext.class); - when(context.getMeasure(CoreMetrics.OVERALL_LINES_TO_COVER)).thenReturn(new Measure(CoreMetrics.OVERALL_LINES_TO_COVER, (double) lines)); - when(context.getMeasure(CoreMetrics.OVERALL_UNCOVERED_LINES)).thenReturn(new Measure(CoreMetrics.OVERALL_UNCOVERED_LINES, (double) uncoveredLines)); - return context; - } -} |