提交 bdbac284 编写于 作者: J Jesse Glick

[FIXED JENKINS-20415] Lack of type safety in JENKINS-20143 fix sometimes caused CCEs.

上级 2a355129
......@@ -69,6 +69,9 @@ Upcoming changes</a>
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-20191">issue 20191</a>)
<li class=rfe>
Collect and report JVM crash dump files to assist trouble-shooting
<li class=bug>
<code>ClassCastException</code>s sometimes shown from views set to be recursive.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-20415">issue 20415</a>)
<li class=rfe>
Show different “up” link for jobs in folders.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-20106">issue 20106</a>)
......
......@@ -186,14 +186,12 @@ public class ListView extends View implements Saveable {
}
private List<TopLevelItem> expand(Collection<TopLevelItem> items, List<TopLevelItem> allItems) {
for (Item item : items) {
for (TopLevelItem item : items) {
if (item instanceof ItemGroup) {
ItemGroup<TopLevelItem> ig = (ItemGroup<TopLevelItem>) item;
expand(ig.getItems(), allItems);
}
if (item instanceof TopLevelItem) {
allItems.add((TopLevelItem) item);
ItemGroup<? extends Item> ig = (ItemGroup<? extends Item>) item;
expand(Util.filter(ig.getItems(), TopLevelItem.class), allItems);
}
allItems.add(item);
}
return allItems;
}
......
......@@ -40,6 +40,10 @@ import org.xml.sax.SAXException;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import hudson.matrix.AxisList;
import hudson.matrix.MatrixProject;
import hudson.matrix.TextAxis;
import java.util.Collections;
public class ListViewTest {
......@@ -95,4 +99,17 @@ public class ListViewTest {
webClient.getPage(top, link.getHrefAttribute());
}
@Bug(20415)
@Test public void nonTopLevelItemGroup() throws Exception {
MatrixProject mp = j.createMatrixProject();
mp.setAxes(new AxisList(new TextAxis("axis", "one", "two")));
assertEquals(2, mp.getItems().size());
ListView v = new ListView("v");
j.jenkins.addView(v);
v.setIncludeRegex(".*");
v.setRecurse(true);
// Note: did not manage to reproduce CCE until I changed expand to use ‘for (TopLevelItem item : items)’ rather than ‘for (Item item : items)’; perhaps a compiler-specific issue?
assertEquals(Collections.singletonList(mp), v.getItems());
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册