aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core
diff options
context:
space:
mode:
authorJulien Lancelot <julien.lancelot@gmail.com>2013-02-01 11:12:40 +0100
committerJulien Lancelot <julien.lancelot@gmail.com>2013-02-01 11:12:58 +0100
commit5e35883be216144c2ec992b8e9daa60283c66f81 (patch)
tree7d73fbf8c394a904550b3159aa41bdaa25006dee /sonar-core
parenteb79a1381ef94aab674fdce313eec25e4f0f3140 (diff)
downloadsonarqube-5e35883be216144c2ec992b8e9daa60283c66f81.tar.gz
sonarqube-5e35883be216144c2ec992b8e9daa60283c66f81.zip
SONAR-4094 On each source file, provide the ability to list all unit tests covering at least one line of code in this source file
Diffstat (limited to 'sonar-core')
-rw-r--r--sonar-core/src/main/java/org/sonar/core/test/DefaultTestCase.java1
-rw-r--r--sonar-core/src/main/java/org/sonar/core/test/DefaultTestable.java10
-rw-r--r--sonar-core/src/test/java/org/sonar/core/test/DefaultTestableTest.java25
3 files changed, 35 insertions, 1 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/test/DefaultTestCase.java b/sonar-core/src/main/java/org/sonar/core/test/DefaultTestCase.java
index 1856135585a..5bd1948f3f4 100644
--- a/sonar-core/src/main/java/org/sonar/core/test/DefaultTestCase.java
+++ b/sonar-core/src/main/java/org/sonar/core/test/DefaultTestCase.java
@@ -132,5 +132,4 @@ public class DefaultTestCase extends BeanVertex implements MutableTestCase {
}, null);
}
-
}
diff --git a/sonar-core/src/main/java/org/sonar/core/test/DefaultTestable.java b/sonar-core/src/main/java/org/sonar/core/test/DefaultTestable.java
index c1cd1ee24e3..bf9163710ff 100644
--- a/sonar-core/src/main/java/org/sonar/core/test/DefaultTestable.java
+++ b/sonar-core/src/main/java/org/sonar/core/test/DefaultTestable.java
@@ -27,6 +27,7 @@ import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.blueprints.Edge;
import com.tinkerpop.blueprints.Vertex;
import org.sonar.api.component.Component;
+import org.sonar.api.test.Cover;
import org.sonar.api.test.MutableTestable;
import org.sonar.api.test.TestCase;
import org.sonar.core.component.ComponentVertex;
@@ -62,6 +63,7 @@ public class DefaultTestable extends BeanVertex implements MutableTestable {
public int countTestCasesOfLine(int line) {
int number = 0;
+// element().query()
// TODO filter on edge
for (Edge edge : covers()) {
if (Iterables.contains(lines(edge), line)) {
@@ -91,6 +93,14 @@ public class DefaultTestable extends BeanVertex implements MutableTestable {
return coveredLines.build();
}
+ public Cover coverOfTestCase(final TestCase testCase) {
+ return Iterables.find(getEdges(DefaultCover.class, Direction.IN, "covers"), new Predicate<Cover>() {
+ public boolean apply(Cover input) {
+ return input.testCase().key().equals(testCase.key());
+ }
+ }, null);
+ }
+
private Iterable<Edge> covers() {
return element().getEdges(Direction.IN, "covers");
}
diff --git a/sonar-core/src/test/java/org/sonar/core/test/DefaultTestableTest.java b/sonar-core/src/test/java/org/sonar/core/test/DefaultTestableTest.java
index 1d020084041..3a921a2508d 100644
--- a/sonar-core/src/test/java/org/sonar/core/test/DefaultTestableTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/test/DefaultTestableTest.java
@@ -21,7 +21,10 @@ package org.sonar.core.test;
import com.google.common.collect.Iterables;
import org.junit.Test;
+import org.sonar.api.component.mock.MockSourceFile;
import org.sonar.api.test.MutableTestCase;
+import org.sonar.core.component.ComponentVertex;
+import org.sonar.core.component.ScanGraph;
import org.sonar.core.graph.BeanGraph;
import java.util.Arrays;
@@ -87,4 +90,26 @@ public class DefaultTestableTest {
assertThat(testable.testCaseByKey("T2")).isEqualTo(testCase2);
assertThat(testable.testCaseByKey("Unknown")).isNull();
}
+
+ @Test
+ public void should_return_cover_of_testCase(){
+ BeanGraph beanGraph = BeanGraph.createInMemory();
+
+ ScanGraph graph = ScanGraph.create();
+ ComponentVertex file1 = graph.addComponent(MockSourceFile.createMain("org.foo.Bar"));
+ DefaultTestable testable1 = beanGraph.createAdjacentVertex(file1, DefaultTestable.class, "testable");
+
+ ComponentVertex file2 = graph.addComponent(MockSourceFile.createMain("org.foo.File"));
+ DefaultTestable testable2 = beanGraph.createAdjacentVertex(file2, DefaultTestable.class, "testable");
+
+ DefaultTestPlan plan = beanGraph.createVertex(DefaultTestPlan.class);
+ plan.addTestCase("T1");
+
+ MutableTestCase testCase = Iterables.get(plan.testCases(), 0);
+ testCase.setCover(testable1, Arrays.asList(10, 11, 12));
+
+ assertThat(testable1.coverOfTestCase(testCase).testCase()).isEqualTo(testCase);
+ assertThat(testable1.coverOfTestCase(testCase).testable()).isEqualTo(testable1);
+ assertThat(testable2.coverOfTestCase(testCase)).isNull();
+ }
}