From 4ec64f10a38d884501670768ef17581924954e52 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Mon, 7 Dec 2015 19:15:17 -0500 Subject: [PATCH] [FIXED JENKINS-31949] CustomOrganizationFolderDescriptor.HideGeneric did not work inside folders. --- .../CustomOrganizationFolderDescriptor.java | 3 ++- .../CustomOrganizationFolderDescriptorTest.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/jenkins/branch/CustomOrganizationFolderDescriptor.java b/src/main/java/jenkins/branch/CustomOrganizationFolderDescriptor.java index aa02064b..a74d1ac7 100644 --- a/src/main/java/jenkins/branch/CustomOrganizationFolderDescriptor.java +++ b/src/main/java/jenkins/branch/CustomOrganizationFolderDescriptor.java @@ -34,6 +34,7 @@ import hudson.model.TopLevelItem; import hudson.model.TopLevelItemDescriptor; import hudson.model.View; +import hudson.model.ViewGroup; import jenkins.scm.api.SCMNavigatorDescriptor; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.NoExternalUse; @@ -92,7 +93,7 @@ public static class HideGeneric extends DescriptorVisibilityFilter { @Override public boolean filter(Object context, Descriptor descriptor) { - if (descriptor instanceof OrganizationFolder.DescriptorImpl && context instanceof View) { + if (descriptor instanceof OrganizationFolder.DescriptorImpl && (context instanceof View || context instanceof ViewGroup)) { return false; } return true; diff --git a/src/test/java/jenkins/branch/CustomOrganizationFolderDescriptorTest.java b/src/test/java/jenkins/branch/CustomOrganizationFolderDescriptorTest.java index 025a1c3f..26a182ab 100644 --- a/src/test/java/jenkins/branch/CustomOrganizationFolderDescriptorTest.java +++ b/src/test/java/jenkins/branch/CustomOrganizationFolderDescriptorTest.java @@ -24,6 +24,7 @@ package jenkins.branch; +import com.cloudbees.hudson.plugins.folder.Folder; import hudson.ExtensionList; import hudson.model.DescriptorVisibilityFilter; import hudson.model.Items; @@ -40,6 +41,7 @@ import static org.junit.Assert.*; import org.junit.Rule; import org.junit.Test; +import org.jvnet.hudson.test.Issue; import org.jvnet.hudson.test.JenkinsRule; import org.jvnet.hudson.test.TestExtension; @@ -86,6 +88,19 @@ public static class SomeNavigatorSomeFactoryInstalledDescriptor1 extends MockNav @TestExtension("someNavigatorSomeFactoryInstalled") public static class SomeNavigatorSomeFactoryInstalledDescriptor2 extends OrganizationFolderTest.MockFactoryDescriptor {} + @Issue("JENKINS-31949") + @Test + public void insideFolder() throws Exception { + Folder folder = r.jenkins.createProject(Folder.class, "d"); + List names = new ArrayList(); + for (TopLevelItemDescriptor d : DescriptorVisibilityFilter.apply(folder, Items.all())) { + if (d.clazz == OrganizationFolder.class || d instanceof CustomOrganizationFolderDescriptor) { + names.add(d.getDisplayName()); + } + } + assertEquals(Collections.emptyList(), names); + } + private static class MockNavigator extends SCMNavigator { @Override public void visitSources(SCMSourceObserver observer) throws IOException, InterruptedException {}