IGNITE-11760 Escaping Suite name if contains vertical line
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/BuildsInfo.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/BuildsInfo.java
index 9c1165d..82ef057 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/BuildsInfo.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/observer/BuildsInfo.java
@@ -53,7 +53,7 @@
/** Server id. */
public final String srvId;
- /** Build type id. */
+ /** Build type id, for which build/observation/visa was ordered. */
public String buildTypeId;
/** Branch name. */
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
index 51f5266..bae99e1 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/chain/PrChainsProcessor.java
@@ -171,7 +171,7 @@
}
/**
- * @param buildTypeId Suite name.
+ * @param buildTypeId Build type ID, for which visa was ordered.
* @param branchForTc Branch for TeamCity.
* @param srvId Server id.
* @param prov Credentials.
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
index 1a5215f..2051015 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/TcBotTriggerAndSignOffService.java
@@ -725,7 +725,7 @@
*
* @param srvId TC Server ID to take information about token from.
* @param prov Credentials.
- * @param buildTypeId Suite name.
+ * @param buildTypeId Build type ID, for which visa was ordered.
* @param branchForTc Branch for TeamCity.
* @param ticket JIRA ticket full name. E.g. IGNITE-5555
* @return {@link Visa} instance.
@@ -791,18 +791,20 @@
/**
* @param suites Suite Current Status.
* @param webUrl Build URL.
+ * @param buildTypeId Build type ID, for which visa was ordered.
+ * @param tcIgnited TC service.
* @return Comment, which should be sent to the JIRA ticket.
*/
private String generateJiraComment(List<SuiteCurrentStatus> suites, String webUrl, String buildTypeId,
ITeamcityIgnited tcIgnited) {
BuildTypeRefCompacted bt = tcIgnited.getBuildTypeRef(buildTypeId);
- String suiteName = (bt != null ? bt.name(compactor) : buildTypeId);
+ String suiteNameUsedForVisa = (bt != null ? bt.name(compactor) : buildTypeId);
StringBuilder res = new StringBuilder();
for (SuiteCurrentStatus suite : suites) {
- res.append("{color:#d04437}").append(suite.name).append("{color}");
+ res.append("{color:#d04437}").append(jiraEscText(suite.name)).append("{color}");
res.append(" [[tests ").append(suite.failedTests);
if (suite.result != null && !suite.result.isEmpty())
@@ -814,9 +816,9 @@
res.append("* ");
if (failure.suiteName != null && failure.testName != null)
- res.append(failure.suiteName).append(": ").append(failure.testName);
+ res.append(failure.suiteName).append(": ").append(jiraEscText(failure.testName));
else
- res.append(failure.name);
+ res.append(jiraEscText(failure.name));
FailureSummary recent = failure.histBaseBranch.recent;
@@ -838,17 +840,28 @@
}
if (res.length() > 0) {
- res.insert(0, "{panel:title=" + suiteName + ": Possible Blockers|" +
+ res.insert(0, "{panel:title=" + jiraEscText(suiteNameUsedForVisa) + ": Possible Blockers|" +
"borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}\\n")
.append("{panel}");
}
else {
- res.append("{panel:title=").append(suiteName).append(": No blockers found!|")
+ res.append("{panel:title=").append(jiraEscText(suiteNameUsedForVisa)).append(": No blockers found!|")
.append("borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}");
}
- res.append("\\n").append("[TeamCity *").append(suiteName).append("* Results|").append(webUrl).append(']');
+ res.append("\\n").append("[TeamCity *").append(jiraEscText(suiteNameUsedForVisa)).append("* Results|").append(webUrl).append(']');
return xmlEscapeText(res.toString());
}
+
+ /**
+ * Escapes text for JIRA.
+ * @param txt Txt.
+ */
+ private String jiraEscText(String txt) {
+ if(Strings.isNullOrEmpty(txt))
+ return "";
+
+ return txt.replaceAll("\\|", "/");
+ }
}
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/VisaStatus.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/VisaStatus.java
index 5a3cb2d..7347894 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/VisaStatus.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/tcbot/visa/VisaStatus.java
@@ -44,7 +44,7 @@
/** */
@Nullable public String cancelUrl;
- /** */
+ /** Build type ID, for which visa was ordered. */
@Nullable public String buildTypeId;
/** */
diff --git a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java
index 77301e0..ae43d4a 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/teamcity/ignited/ITeamcityIgnited.java
@@ -145,7 +145,7 @@
/**
* Returns IDs of N. most recent builds in build history.
*
- * @param btId Bt id.
+ * @param btId Build type ID.
* @param branchForTc Branch for tc.
* @param cnt Count.
*/