diff options
author | Simon Brandhof <simon.brandhof@gmail.com> | 2013-02-05 19:07:42 +0100 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@gmail.com> | 2013-02-05 19:10:17 +0100 |
commit | b58601cce773c23cdef9feb56e0cc486f000001a (patch) | |
tree | 1acd3da6c4cdaabb0e7375f5613beb3da418e079 /sonar-core | |
parent | f0e662a2b73e0e9ae70b005e7093c5c27fab24d8 (diff) | |
download | sonarqube-b58601cce773c23cdef9feb56e0cc486f000001a.tar.gz sonarqube-b58601cce773c23cdef9feb56e0cc486f000001a.zip |
SONAR-2501 a test plan can have multiple test cases with the same name (see TestNG)
Diffstat (limited to 'sonar-core')
6 files changed, 41 insertions, 57 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 d7b200e4673..7b535ad7c23 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 @@ -50,24 +50,12 @@ public class DefaultTestCase extends BeanVertex implements MutableTestCase { return this; } - public String status() { - return (String) getProperty("status"); + public Status status() { + return Status.of((String)getProperty("status")); } - public MutableTestCase setStatus(@Nullable String s) { - setProperty("status", s); - return this; - } - - /** - * The key is not blank and unique among the test plan. - */ - public String key() { - return (String) getProperty("key"); - } - - public MutableTestCase setKey(String s) { - setProperty("key", s); + public MutableTestCase setStatus(@Nullable Status s) { + setProperty("status", s == null ? null : s.toString()); return this; } diff --git a/sonar-core/src/main/java/org/sonar/core/test/DefaultTestPlan.java b/sonar-core/src/main/java/org/sonar/core/test/DefaultTestPlan.java index c1947f9b168..a9c4b69cc02 100644 --- a/sonar-core/src/main/java/org/sonar/core/test/DefaultTestPlan.java +++ b/sonar-core/src/main/java/org/sonar/core/test/DefaultTestPlan.java @@ -19,10 +19,10 @@ */ package org.sonar.core.test; +import com.google.common.collect.Lists; import com.tinkerpop.blueprints.Direction; import com.tinkerpop.blueprints.Vertex; import org.sonar.api.component.Component; -import org.sonar.api.test.exception.TestCaseAlreadyExistsException; import org.sonar.api.test.MutableTestCase; import org.sonar.api.test.MutableTestPlan; import org.sonar.core.component.ComponentVertex; @@ -31,6 +31,8 @@ import org.sonar.core.graph.GraphUtil; import javax.annotation.CheckForNull; +import java.util.List; + public class DefaultTestPlan extends BeanVertex implements MutableTestPlan { public Component component() { Vertex component = GraphUtil.singleAdjacent(element(), Direction.IN, "testplan"); @@ -47,21 +49,19 @@ public class DefaultTestPlan extends BeanVertex implements MutableTestPlan { } @CheckForNull - public MutableTestCase testCaseByKey(String key) { + public Iterable<MutableTestCase> testCasesByName(String name) { + List<MutableTestCase> result = Lists.newArrayList(); for (MutableTestCase testCase : testCases()) { - if (key.equals(testCase.key())) { - return testCase; + if (name.equals(testCase.name())) { + result.add(testCase); } } - return null; + return result; } - public MutableTestCase addTestCase(String key) { - if (testCaseByKey(key)!=null) { - throw new TestCaseAlreadyExistsException(component().key(), key); - } + public MutableTestCase addTestCase(String name) { DefaultTestCase testCase = beanGraph().createAdjacentVertex(this, DefaultTestCase.class, "testcase"); - testCase.setKey(key); + testCase.setName(name); return testCase; } 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 25a3510f162..a3b4f2598c4 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 @@ -53,10 +53,10 @@ public class DefaultTestable extends BeanVertex implements MutableTestable { return cases.build(); } - public TestCase testCaseByKey(final String key) { + public TestCase testCaseByName(final String name) { return Iterables.find(testCases(), new Predicate<TestCase>() { public boolean apply(TestCase input) { - return input.key().equals(key); + return input.name().equals(name); } }, null); } @@ -94,7 +94,7 @@ public class DefaultTestable extends BeanVertex implements MutableTestable { 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()); + return input.testCase().name().equals(testCase.name()); } }, null); } diff --git a/sonar-core/src/test/java/org/sonar/core/test/DefaultTestCaseTest.java b/sonar-core/src/test/java/org/sonar/core/test/DefaultTestCaseTest.java index 212216dcf5d..8dc9289bc9d 100644 --- a/sonar-core/src/test/java/org/sonar/core/test/DefaultTestCaseTest.java +++ b/sonar-core/src/test/java/org/sonar/core/test/DefaultTestCaseTest.java @@ -83,7 +83,7 @@ public class DefaultTestCaseTest { } @Test - public void should_return_cover_of_testable(){ + public void should_return_cover_of_testable() { BeanGraph beanGraph = BeanGraph.createInMemory(); ScanGraph graph = ScanGraph.create(); @@ -106,19 +106,17 @@ public class DefaultTestCaseTest { BeanGraph beanGraph = BeanGraph.createInMemory(); DefaultTestCase testCase = beanGraph.createVertex(DefaultTestCase.class); - testCase.setKey("T1") - .setName("Test one") + testCase.setName("T1") .setDurationInMs(1234L) .setMessage("Error msg") .setStackTrace("xxx") - .setStatus(TestCase.STATUS_FAIL); + .setStatus(TestCase.Status.ERROR); - assertThat(testCase.key()).isEqualTo("T1"); - assertThat(testCase.name()).isEqualTo("Test one"); + assertThat(testCase.name()).isEqualTo("T1"); assertThat(testCase.message()).isEqualTo("Error msg"); assertThat(testCase.stackTrace()).isEqualTo("xxx"); assertThat(testCase.durationInMs()).isEqualTo(1234L); - assertThat(testCase.status()).isEqualTo(TestCase.STATUS_FAIL); + assertThat(testCase.status()).isEqualTo(TestCase.Status.ERROR); } @Test diff --git a/sonar-core/src/test/java/org/sonar/core/test/DefaultTestPlanTest.java b/sonar-core/src/test/java/org/sonar/core/test/DefaultTestPlanTest.java index 32a3c32157e..816bdb13d4c 100644 --- a/sonar-core/src/test/java/org/sonar/core/test/DefaultTestPlanTest.java +++ b/sonar-core/src/test/java/org/sonar/core/test/DefaultTestPlanTest.java @@ -23,10 +23,8 @@ import com.google.common.collect.Iterables; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.sonar.api.test.exception.TestCaseAlreadyExistsException; import org.sonar.api.test.MutableTestCase; import org.sonar.api.test.TestPlan; -import org.sonar.core.component.ComponentVertex; import org.sonar.core.graph.BeanGraph; import static org.fest.assertions.Assertions.assertThat; @@ -53,46 +51,46 @@ public class DefaultTestPlanTest { assertThat(plan.testCases()).hasSize(2); MutableTestCase firstTestCase = Iterables.get(plan.testCases(), 0); - assertThat(firstTestCase.key()).isEqualTo("T1"); + assertThat(firstTestCase.name()).isEqualTo("T1"); assertThat(firstTestCase.testPlan()).isSameAs(plan); MutableTestCase secondTestCase = Iterables.get(plan.testCases(), 1); - assertThat(secondTestCase.key()).isEqualTo("T2"); + assertThat(secondTestCase.name()).isEqualTo("T2"); assertThat(secondTestCase.testPlan()).isSameAs(plan); } @Test - public void should_find_test_case_by_key() { + public void should_find_test_case_by_name() { BeanGraph beanGraph = BeanGraph.createInMemory(); DefaultTestPlan plan = beanGraph.createVertex(DefaultTestPlan.class); plan.addTestCase("T1"); plan.addTestCase("T2"); - assertThat(plan.testCaseByKey("T1").key()).isEqualTo("T1"); - assertThat(plan.testCaseByKey("T3")).isNull(); + assertThat(plan.testCasesByName("T1")).hasSize(1); + assertThat(Iterables.get(plan.testCasesByName("T1"), 0).name()).isEqualTo("T1"); + assertThat(plan.testCasesByName("T3")).isEmpty(); } @Test - public void should_set_type() { + public void should_find_multiple_test_cases_by_name() { BeanGraph beanGraph = BeanGraph.createInMemory(); DefaultTestPlan plan = beanGraph.createVertex(DefaultTestPlan.class); - assertThat(plan.type()).isNull(); + plan.addTestCase("T1"); + plan.addTestCase("T1"); - plan.setType(TestPlan.TYPE_UNIT); - assertThat(plan.type()).isEqualTo(TestPlan.TYPE_UNIT); + assertThat(plan.testCasesByName("T1")).hasSize(2); } @Test - public void keys_of_test_cases_should_be_unique() { - thrown.expect(TestCaseAlreadyExistsException.class); - + public void should_set_type() { BeanGraph beanGraph = BeanGraph.createInMemory(); - ComponentVertex component = beanGraph.createVertex(ComponentVertex.class); - DefaultTestPlan plan = beanGraph.createAdjacentVertex(component, DefaultTestPlan.class, "testplan"); - plan.addTestCase("T1"); - plan.addTestCase("T1"); + DefaultTestPlan plan = beanGraph.createVertex(DefaultTestPlan.class); + assertThat(plan.type()).isNull(); + + plan.setType(TestPlan.TYPE_UNIT); + assertThat(plan.type()).isEqualTo(TestPlan.TYPE_UNIT); } } 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 3a921a2508d..cbf107b1617 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 @@ -86,9 +86,9 @@ public class DefaultTestableTest { MutableTestCase testCase2 = Iterables.get(plan.testCases(), 1); testCase2.setCover(testable, Arrays.asList(12, 48, 49)); - assertThat(testable.testCaseByKey("T1")).isEqualTo(testCase1); - assertThat(testable.testCaseByKey("T2")).isEqualTo(testCase2); - assertThat(testable.testCaseByKey("Unknown")).isNull(); + assertThat(testable.testCaseByName("T1")).isEqualTo(testCase1); + assertThat(testable.testCaseByName("T2")).isEqualTo(testCase2); + assertThat(testable.testCaseByName("Unknown")).isNull(); } @Test |