提交 0e0ef4c9 编写于 作者: O Olivier Lamy

Merge pull request #763 from Vlatombe/recurse-folders-maven-jobs-compat

Fix compatibility of the recurse option with Maven jobs
Thanks !
......@@ -189,15 +189,18 @@ public class ListView extends View implements Saveable {
includeItems(parent, parent, names);
}
private void includeItems(ItemGroup<? extends TopLevelItem> root, ItemGroup<? extends TopLevelItem> parent, SortedSet<String> names) {
private void includeItems(ItemGroup<? extends TopLevelItem> root, ItemGroup<?> parent, SortedSet<String> names) {
if (includePattern != null) {
for (Item item : parent.getItems()) {
if (recurse && item instanceof ItemGroup) {
includeItems(root, (ItemGroup<? extends TopLevelItem>)item, names);
ItemGroup<?> ig = (ItemGroup<?>) item;
includeItems(root, ig, names);
}
String itemName = item.getRelativeNameFrom(root);
if (includePattern.matcher(itemName).matches()) {
names.add(itemName);
if (item instanceof TopLevelItem) {
String itemName = item.getRelativeNameFrom(root);
if (includePattern.matcher(itemName).matches()) {
names.add(itemName);
}
}
}
}
......@@ -229,6 +232,13 @@ public class ListView extends View implements Saveable {
public boolean isRecurse() {
return recurse;
}
/*
* For testing purposes
*/
void setRecurse(boolean recurse) {
this.recurse = recurse;
}
/**
* Filter by enabled/disabled status of jobs.
......
package hudson.model;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import hudson.views.ListViewColumn;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
public class ListViewTest {
private interface ItemGroupOfNonTopLevelItem extends TopLevelItem, ItemGroup<Item> {}
@Test
@PrepareForTest({ListViewColumn.class,Items.class})
public void listItemRecurseWorksWithNonTopLevelItems() throws IOException{
mockStatic(Items.class);
mockStatic(ListViewColumn.class);
List<ListViewColumn> columns = Collections.emptyList();
when(ListViewColumn.createDefaultInitialColumnList()).thenReturn(columns);
ViewGroup owner = mock(ViewGroup.class);
ItemGroup itemGroupOwner = mock(ItemGroup.class);
when(owner.getItemGroup()).thenReturn(itemGroupOwner);
ListView lv = new ListView("test", owner);
ItemGroupOfNonTopLevelItem ig = Mockito.mock(ItemGroupOfNonTopLevelItem.class);
when(Items.getAllItems(eq(itemGroupOwner), eq(TopLevelItem.class))).thenReturn(Arrays.asList((TopLevelItem) ig));
when(ig.getRelativeNameFrom(any(ItemGroup.class))).thenReturn("test-item");
lv.setRecurse(true);
lv.add(ig);
assertEquals(1, lv.getItems().size());
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册