aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorEvgeny Mandrikov <mandrikov@gmail.com>2011-04-19 19:33:47 +0400
committerEvgeny Mandrikov <mandrikov@gmail.com>2011-04-20 01:41:21 +0400
commit060c18523247bd07431ba5de664193247afa7b9a (patch)
treef21fbef3885ea97d64939454a7fb3420ab444270 /plugins
parent5cc143c7351b3a5d8334a59b42720407232f4153 (diff)
downloadsonarqube-060c18523247bd07431ba5de664193247afa7b9a.tar.gz
sonarqube-060c18523247bd07431ba5de664193247afa7b9a.zip
SONAR-2371 SurefireSensor should not insert unit test measures when there is no reports
- UnitTestDecorator should save zero for unit test measure for project, when there is no values for summarizing and type of analysis is reuse reports or dynamic - Don't use pom.getPackaging() in AbstractSurefireParser
Diffstat (limited to 'plugins')
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/UnitTestDecorator.java3
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/UnitTestDecoratorTest.java35
-rw-r--r--plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java15
-rw-r--r--plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/AbstractSurefireParserTest.java3
4 files changed, 38 insertions, 18 deletions
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/UnitTestDecorator.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/UnitTestDecorator.java
index c61a46bfec2..0f4ce4b9b69 100644
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/UnitTestDecorator.java
+++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/UnitTestDecorator.java
@@ -60,6 +60,9 @@ public class UnitTestDecorator implements Decorator {
if (isPositive(tests, true) && isPositive(errors, false) && isPositive(failures, false)) {
Double errorsAndFailuresRatio = (errors + failures) * 100.0 / tests;
context.saveMeasure(CoreMetrics.TEST_SUCCESS_DENSITY, 100.0 - errorsAndFailuresRatio);
+ } else if (tests == null && ResourceUtils.isProject(resource)) {
+ // See http://jira.codehaus.org/browse/SONAR-2371
+ context.saveMeasure(CoreMetrics.TESTS, 0.0);
}
}
}
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/UnitTestDecoratorTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/UnitTestDecoratorTest.java
index 3b46ae33a0f..da3823d9a6d 100644
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/UnitTestDecoratorTest.java
+++ b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/UnitTestDecoratorTest.java
@@ -21,25 +21,52 @@ package org.sonar.plugins.core.sensors;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-import org.junit.Test;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.sonar.api.batch.DecoratorContext;
+import org.sonar.api.measures.CoreMetrics;
import org.sonar.api.resources.Project;
public class UnitTestDecoratorTest {
+ private UnitTestDecorator decorator;
+
+ @Before
+ public void setUp() {
+ decorator = new UnitTestDecorator();
+ }
+
@Test
public void generatesMetrics() {
- assertThat(new UnitTestDecorator().generatesMetrics().size(), is(5));
+ assertThat(decorator.generatesMetrics().size(), is(5));
}
@Test
public void doNotDecorateStaticAnalysis() {
Project project = mock(Project.class);
when(project.getAnalysisType()).thenReturn(Project.AnalysisType.STATIC);
- assertThat(new UnitTestDecorator().shouldExecuteOnProject(project), is(false));
+ assertThat(decorator.shouldExecuteOnProject(project), is(false));
when(project.getAnalysisType()).thenReturn(Project.AnalysisType.DYNAMIC);
- assertThat(new UnitTestDecorator().shouldExecuteOnProject(project), is(true));
+ assertThat(decorator.shouldExecuteOnProject(project), is(true));
}
+
+ /**
+ * See http://jira.codehaus.org/browse/SONAR-2371
+ */
+ @Test
+ public void shouldSaveZeroOnProject() {
+ DecoratorContext context = mock(DecoratorContext.class);
+ Project project = new Project("");
+ project.setAnalysisType(Project.AnalysisType.DYNAMIC);
+
+ decorator.decorate(project, context);
+
+ verify(context).saveMeasure(CoreMetrics.TESTS, 0.0);
+ }
+
}
diff --git a/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java
index c8d6a5fd372..d0cc6262093 100644
--- a/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java
+++ b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java
@@ -33,11 +33,12 @@ import org.sonar.plugins.surefire.data.SurefireStaxHandler;
import org.sonar.plugins.surefire.data.UnitTestClassReport;
import org.sonar.plugins.surefire.data.UnitTestIndex;
-import javax.xml.stream.XMLStreamException;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Map;
+import javax.xml.stream.XMLStreamException;
+
/**
* @since 2.4
*/
@@ -46,9 +47,7 @@ public abstract class AbstractSurefireParser {
public void collect(Project project, SensorContext context, File reportsDir) {
File[] xmlFiles = getReports(reportsDir);
- if (xmlFiles.length == 0) {
- insertZeroWhenNoReports(project, context);
- } else {
+ if (xmlFiles.length != 0) {
parseFiles(context, xmlFiles);
}
}
@@ -64,18 +63,11 @@ public abstract class AbstractSurefireParser {
});
}
- private void insertZeroWhenNoReports(Project project, SensorContext context) {
- if (!StringUtils.equalsIgnoreCase("pom", project.getPackaging())) {
- context.saveMeasure(CoreMetrics.TESTS, 0.0);
- }
- }
-
private void parseFiles(SensorContext context, File[] reports) {
UnitTestIndex index = new UnitTestIndex();
parseFiles(reports, index);
sanitize(index);
save(index, context);
-
}
private void parseFiles(File[] reports, UnitTestIndex index) {
@@ -121,7 +113,6 @@ public abstract class AbstractSurefireParser {
}
}
-
private void saveMeasure(SensorContext context, Resource resource, Metric metric, double value) {
if (!Double.isNaN(value)) {
context.saveMeasure(resource, metric, value);
diff --git a/plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/AbstractSurefireParserTest.java b/plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/AbstractSurefireParserTest.java
index 697c94a5750..15085fee0c4 100644
--- a/plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/AbstractSurefireParserTest.java
+++ b/plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/AbstractSurefireParserTest.java
@@ -22,7 +22,6 @@ package org.sonar.plugins.surefire.api;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.junit.Test;
-import org.mockito.internal.matchers.StartsWith;
import org.sonar.api.batch.SensorContext;
import org.sonar.api.measures.CoreMetrics;
import org.sonar.api.measures.Metric;
@@ -60,7 +59,7 @@ public class AbstractSurefireParserTest {
parser.collect(new Project("foo"), context, getDir("noReports"));
- verify(context).saveMeasure(CoreMetrics.TESTS, 0.0);
+ verifyZeroInteractions(context);
}
@Test