Index: src/main/java/hudson/plugins/cobertura/targets/CoverageResult.java =================================================================== --- src/main/java/hudson/plugins/cobertura/targets/CoverageResult.java (revision 21318) +++ src/main/java/hudson/plugins/cobertura/targets/CoverageResult.java (working copy) @@ -229,7 +229,7 @@ * @return Value for property 'children'. */ public Set getChildren() { - return children.keySet(); + return new TreeSet(children.keySet()); } /** Index: src/main/resources/hudson/plugins/cobertura/targets/CoverageResult/index.jelly =================================================================== --- src/main/resources/hudson/plugins/cobertura/targets/CoverageResult/index.jelly (revision 21318) +++ src/main/resources/hudson/plugins/cobertura/targets/CoverageResult/index.jelly (working copy) @@ -47,9 +47,9 @@

${it.element.displayName} Coverage Summary

- + - + @@ -109,9 +109,9 @@

Coverage Breakdown by ${element.displayName}

NameName ${metric.name}${metric.name}
- + - + Index: src/test/java/hudson/plugins/cobertura/CoverageResultTest.java =================================================================== --- src/test/java/hudson/plugins/cobertura/CoverageResultTest.java (revision 21318) +++ src/test/java/hudson/plugins/cobertura/CoverageResultTest.java (working copy) @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedList; import java.util.Map; @@ -24,6 +25,7 @@ */ public class CoverageResultTest extends TestCase { private static final String FILE_COVERAGE_DATA = "coverage-with-data.xml"; + private static final String FILE_UNSORTED_COVERAGE_DATA = "coverage-with-data.xml"; private IMocksControl ctl; private AbstractBuild build; @@ -183,6 +185,22 @@ assertEquals(Collections.emptySet(), result.getChildren()); ctl.verify(); } + + public void testChildrenIsSorted() throws Exception { + CoverageResult result = loadResults(FILE_UNSORTED_COVERAGE_DATA); + result.setOwner(null); + assertNotNull(result); + assertEquals(2, result.getChildren().size()); + Iterator childrenIterator = result.getChildren().iterator(); + assertEquals("", childrenIterator.next()); + assertEquals("search", childrenIterator.next()); + CoverageResult subResult = result.getChild("search"); + assertEquals(3, subResult.getChildren().size()); + childrenIterator = subResult.getChildren().iterator(); + assertEquals("BinarySearch.java", childrenIterator.next()); + assertEquals("ISortedArraySearch.java", childrenIterator.next()); + assertEquals("LinearSearch.java", childrenIterator.next()); + } /** * Tests the behavior of {@link CoverageResult#getChildren(CoverageElement)}. Index: src/test/resources/hudson/plugins/cobertura/coverage-with-unsorted-data.xml =================================================================== --- src/test/resources/hudson/plugins/cobertura/coverage-with-unsorted-data.xml (revision 0) +++ src/test/resources/hudson/plugins/cobertura/coverage-with-unsorted-data.xml (revision 0) @@ -0,0 +1,179 @@ + + + + + + C:/local/mvn-coverage-example/src/main/java + --source + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameName ${metric.name}${metric.name}