diff --git a/pom.xml b/pom.xml
index 64ca8639..5d9d879b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -63,7 +63,7 @@ THE SOFTWARE.
999999-SNAPSHOT
- 2.414.3
+ 2.444
false
jenkinsci/${project.artifactId}-plugin
@@ -71,11 +71,17 @@ THE SOFTWARE.
io.jenkins.tools.bom
- bom-2.414.x
- 2705.vf5c48c31285b_
+ bom-2.440.x
+ 2746.vb_79a_1d3e7b_c8
import
pom
+
+
+ org.jenkins-ci.plugins
+ cloudbees-folder
+ 6.919.va_e17e72383f5
+
diff --git a/src/test/java/org/jenkinsci/plugins/workflow/multibranch/WorkflowMultiBranchProjectTest.java b/src/test/java/org/jenkinsci/plugins/workflow/multibranch/WorkflowMultiBranchProjectTest.java
index 0a322f22..86d2af83 100644
--- a/src/test/java/org/jenkinsci/plugins/workflow/multibranch/WorkflowMultiBranchProjectTest.java
+++ b/src/test/java/org/jenkinsci/plugins/workflow/multibranch/WorkflowMultiBranchProjectTest.java
@@ -26,6 +26,7 @@
import com.cloudbees.hudson.plugins.folder.computed.FolderComputation;
import edu.umd.cs.findbugs.annotations.NonNull;
+import hudson.model.AbstractItem;
import hudson.model.DescriptorVisibilityFilter;
import hudson.model.Item;
import hudson.model.Queue;
@@ -53,13 +54,19 @@
import jenkins.plugins.git.GitSCMSource;
import jenkins.plugins.git.GitBranchSCMHead;
import jenkins.plugins.git.GitSampleRepoRule;
+import jenkins.plugins.git.traits.BranchDiscoveryTrait;
import jenkins.scm.api.SCMHead;
import jenkins.scm.api.SCMSource;
import jenkins.scm.impl.SingleSCMSource;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import org.jenkinsci.plugins.workflow.job.WorkflowJob;
import org.jenkinsci.plugins.workflow.job.WorkflowRun;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
@@ -267,4 +274,34 @@ public DescriptorImpl() {
r.assertLogContains("branch=feature2", b2);
}
+ @Issue("JENKINS-72613")
+ @Test public void reloadMangledName() throws Exception {
+ r.jenkins.setQuietPeriod(0);
+ sampleRepo.init();
+ sampleRepo.write("Jenkinsfile", "echo 'on master'");
+ sampleRepo.git("add", "Jenkinsfile");
+ sampleRepo.git("commit", "--all", "--message=init");
+ for (var branch : List.of("ok-1", "danger_1")) {
+ sampleRepo.git("checkout", "-b", branch, "master");
+ sampleRepo.write("Jenkinsfile", "echo 'on " + branch + "'");
+ sampleRepo.git("add", "Jenkinsfile");
+ sampleRepo.git("commit", "--all", "--message=" + branch);
+ }
+ var mp = r.jenkins.createProject(WorkflowMultiBranchProject.class, "p");
+ var source = new GitSCMSource(sampleRepo.toString());
+ source.setTraits(List.of(new BranchDiscoveryTrait()));
+ mp.getSourcesList().add(new BranchSource(source));
+ var ok = scheduleAndFindBranchProject(mp, "ok-1");
+ var danger = findBranchProject(mp, "danger_1");
+ r.waitUntilNoActivity();
+ assertThat(ok.getRootDir().getName(), is("ok-1"));
+ assertThat(danger.getRootDir().getName(), is("danger-1.i2g9ue"));
+ ok.doReload();
+ assertThat(mp.getItems().stream().map(AbstractItem::getName).toArray(String[]::new),
+ arrayContainingInAnyOrder("master", "ok-1", "danger_1"));
+ danger.doReload();
+ assertThat(mp.getItems().stream().map(AbstractItem::getName).toArray(String[]::new),
+ arrayContainingInAnyOrder("master", "ok-1", "danger_1"));
+ }
+
}