diff options
author | Julien Lancelot <julien.lancelot@gmail.com> | 2013-02-01 11:12:40 +0100 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@gmail.com> | 2013-02-01 11:12:58 +0100 |
commit | 5e35883be216144c2ec992b8e9daa60283c66f81 (patch) | |
tree | 7d73fbf8c394a904550b3159aa41bdaa25006dee /sonar-core | |
parent | eb79a1381ef94aab674fdce313eec25e4f0f3140 (diff) | |
download | sonarqube-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')
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(); + } } |