diff --git a/bots/synclabel/src/test/java/org/openjdk/skara/bots/synclabel/SyncLabelBotTests.java b/bots/synclabel/src/test/java/org/openjdk/skara/bots/synclabel/SyncLabelBotTests.java index bb32cf186..4537ef6d2 100644 --- a/bots/synclabel/src/test/java/org/openjdk/skara/bots/synclabel/SyncLabelBotTests.java +++ b/bots/synclabel/src/test/java/org/openjdk/skara/bots/synclabel/SyncLabelBotTests.java @@ -339,4 +339,49 @@ void testInspect(TestInfo testInfo) throws IOException { assertEquals(List.of("hgupdate-sync"), issue4.labels()); } } + + @Test + void testAddLabelWithBuild(TestInfo testInfo) throws IOException { + try (var credentials = new HostCredentials(testInfo); + var tempFolder = new TemporaryDirectory()) { + var storageFolder = tempFolder.path().resolve("storage"); + var issueProject = credentials.getIssueProject(); + var syncLabelBot = testBotBuilder(issueProject, storageFolder).create("synclabel", JSON.object()); + + var issue1 = credentials.createIssue(issueProject, "Issue 1"); + issue1.setProperty("fixVersions", JSON.array().add(JSON.of("openjfx17"))); + issue1.setProperty("issuetype", JSON.of("Bug")); + issue1.setState(RESOLVED); + TestBotRunner.runPeriodicItems(syncLabelBot); + assertEquals(List.of(), issue1.labels()); + + var issue2 = credentials.createIssue(issueProject, "Issue 2"); + issue2.setProperty("fixVersions", JSON.array().add(JSON.of("8u271"))); + issue2.setProperty("issuetype", JSON.of("Backport")); + issue2.setProperty("customfield_10006", JSON.of("b33")); + issue2.setState(RESOLVED); + issue1.addLink(Link.create(issue2, "backported by").build()); + TestBotRunner.runPeriodicItems(syncLabelBot); + assertEquals(List.of(), issue1.labels()); + + var issue3 = credentials.createIssue(issueProject, "Issue 3"); + issue3.setProperty("fixVersions", JSON.array().add(JSON.of("8u291"))); + issue3.setProperty("issuetype", JSON.of("Backport")); + issue3.setState(RESOLVED); + issue1.addLink(Link.create(issue3, "backported by").build()); + TestBotRunner.runPeriodicItems(syncLabelBot); + assertEquals(List.of(), issue3.labels()); + + var issue4 = credentials.createIssue(issueProject, "Issue 4"); + issue4.setProperty("fixVersions", JSON.array().add(JSON.of("8u301"))); + issue4.setProperty("issuetype", JSON.of("Backport")); + issue4.setState(RESOLVED); + issue1.addLink(Link.create(issue4, "backported by").build()); + TestBotRunner.runPeriodicItems(syncLabelBot); + assertEquals(List.of(), issue1.labels()); + assertEquals(List.of(), issue2.labels()); + assertEquals(List.of(), issue3.labels()); + assertEquals(List.of("hgupdate-sync"), issue4.labels()); + } + } } diff --git a/jbs/src/main/java/org/openjdk/skara/jbs/Backports.java b/jbs/src/main/java/org/openjdk/skara/jbs/Backports.java index 49d1f2835..234b3ea8f 100644 --- a/jbs/src/main/java/org/openjdk/skara/jbs/Backports.java +++ b/jbs/src/main/java/org/openjdk/skara/jbs/Backports.java @@ -73,8 +73,8 @@ public static Optional mainFixVersion(Issue issue) { log.warning("Issue " + issue.id() + " has multiple valid fixVersions - ignoring"); return Optional.empty(); } - if (issue.properties().containsKey("customfield_10006") && issue.properties().get("customfield_10006").isObject()) { - return JdkVersion.parse(versionString.get(0), issue.properties().get("customfield_10006").get("value").asString()); + if (issue.properties().containsKey("customfield_10006")) { + return JdkVersion.parse(versionString.get(0), issue.properties().get("customfield_10006").asString()); } else { return JdkVersion.parse(versionString.get(0)); } diff --git a/jbs/src/test/java/org/openjdk/skara/jbs/BackportsTests.java b/jbs/src/test/java/org/openjdk/skara/jbs/BackportsTests.java index 2828033d9..2ef0f7fef 100644 --- a/jbs/src/test/java/org/openjdk/skara/jbs/BackportsTests.java +++ b/jbs/src/test/java/org/openjdk/skara/jbs/BackportsTests.java @@ -196,7 +196,7 @@ private void setState(Issue issue, String version) { } issue.setProperty("fixVersions", JSON.array().add(version)); if (!resolvedInBuild.isEmpty()) { - issue.setProperty("customfield_10006", JSON.object().put("value", resolvedInBuild)); + issue.setProperty("customfield_10006", JSON.of(resolvedInBuild)); } } @@ -475,4 +475,20 @@ void labelTest8242283(TestInfo testInfo) throws IOException { backports.assertLabeled(); } } + + @Test + void labelTest8261303(TestInfo testInfo) throws IOException + { + try (var credentials = new HostCredentials(testInfo)) { + var backports = new BackportManager(credentials, "openjfx17"); + backports.assertLabeled(); + + backports.addBackports("8u271/b33", "8u291", "8u301"); + backports.assertLabeled("8u301"); + + backports.addBackports("11.0.11-oracle", "11.0.11", "11.0.10-oracle", "11.0.9.0.1-oracle/b01", + "11.0.9-oracle", "11.0.8.0.2-oracle"); + backports.assertLabeled("8u301", "11.0.9.0.1-oracle", "11.0.10-oracle", "11.0.11-oracle"); + } + } }