Skip to content

Commit 8640e60

Browse files
committed
fix: [CI-3598]: fixed emojis in pr
1 parent 7aa1970 commit 8640e60

4 files changed

Lines changed: 82 additions & 2 deletions

File tree

889-yaml-commons/src/main/java/io/harness/pms/merger/helpers/MergeHelper.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,16 +121,23 @@ public String mergeUpdatesIntoJson(String pipelineJson, Map<String, String> fqnT
121121
return JsonUtils.asJson(pipelineNode.getCurrJsonNode());
122122
}
123123
fqnToJsonMap.keySet().forEach(fqn -> {
124+
String content = fqnToJsonMap.get(fqn);
125+
content = removeNonASCII(content);
124126
try {
125-
pipelineNode.replacePath(fqn, YamlUtils.readTree(fqnToJsonMap.get(fqn)).getNode().getCurrJsonNode());
127+
pipelineNode.replacePath(fqn, YamlUtils.readTree(content).getNode().getCurrJsonNode());
126128
} catch (IOException e) {
127-
log.error("Could not read json provided for the fqn: " + fqn + ". Json:\n" + fqnToJsonMap.get(fqn), e);
129+
log.error("Could not read json provided for the fqn: " + fqn + ". Json:\n" + content, e);
128130
throw new YamlException("Could not read json provided for the fqn: " + fqn);
129131
}
130132
});
131133
return JsonUtils.asJson(pipelineNode.getCurrJsonNode());
132134
}
133135

136+
// Yaml Object Mapper can't handle emojis and non ascii characters
137+
public String removeNonASCII(String content) {
138+
return content.replaceAll("[^\\x00-\\x7F]", "");
139+
}
140+
134141
public String removeFQNs(String json, List<String> toBeRemovedFQNs) {
135142
if (EmptyPredicate.isEmpty(toBeRemovedFQNs)) {
136143
return json;

889-yaml-commons/src/test/java/io/harness/pms/merger/helpers/MergeHelperTest.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import static io.harness.annotations.dev.HarnessTeam.PIPELINE;
1111
import static io.harness.pms.merger.helpers.MergeHelper.mergeRuntimeInputValuesIntoOriginalYaml;
12+
import static io.harness.rule.OwnerRule.DEV_MITTAL;
1213
import static io.harness.rule.OwnerRule.NAMAN;
1314

1415
import static org.assertj.core.api.Assertions.assertThat;
@@ -120,6 +121,53 @@ public void testMergeYamlUpdates() throws IOException {
120121
assertThat(noUpdatesOnYaml).isEqualTo(readFile("opa-pipeline.json"));
121122
}
122123

124+
@Test
125+
@Owner(developers = DEV_MITTAL)
126+
@Category(UnitTests.class)
127+
public void testMergeYamlUpdatesEmojis() throws IOException {
128+
String filename = "opa-pipeline.yaml";
129+
String pipeline = readFile(filename);
130+
131+
String fqn1 = "pipeline/stages/[0]/stage/spec/execution/steps/[0]/step/spec/connector";
132+
String exp1 = readFile("emojiExp1.txt");
133+
134+
String fqn2 = "pipeline/stages/[1]/stage/spec/infrastructure/environment";
135+
String exp2 = readFile("emojiExp2.txt");
136+
137+
Map<String, String> fqnToJsonMap = new HashMap<>();
138+
fqnToJsonMap.put(fqn1, exp1);
139+
fqnToJsonMap.put(fqn2, exp2);
140+
String expandedPipeline = MergeHelper.mergeUpdatesIntoJson(pipeline, fqnToJsonMap);
141+
assertThat(expandedPipeline).isNotNull();
142+
String expandedPipelineExpected = readFile("opa-pipeline-with-expansions-no-removals.json");
143+
assertThat(expandedPipeline).isEqualTo(expandedPipelineExpected);
144+
YamlField yamlField = YamlUtils.readTree(expandedPipeline);
145+
YamlNode firstExp =
146+
yamlField.getNode().gotoPath("pipeline/stages/[0]/stage/spec/execution/steps/[0]/step/spec/connector");
147+
YamlNode secondExp = yamlField.getNode().gotoPath("pipeline/stages/[1]/stage/spec/infrastructure/environment");
148+
assertThat(firstExp).isNotNull();
149+
assertThat(secondExp).isNotNull();
150+
151+
String noUpdates = MergeHelper.mergeUpdatesIntoJson(expandedPipeline, null);
152+
assertThat(noUpdates).isEqualTo(expandedPipeline);
153+
154+
String noUpdatesOnYaml = MergeHelper.mergeUpdatesIntoJson(pipeline, null);
155+
assertThat(noUpdatesOnYaml).isEqualTo(readFile("opa-pipeline.json"));
156+
}
157+
158+
@Test
159+
@Owner(developers = DEV_MITTAL)
160+
@Category(UnitTests.class)
161+
public void testRemoveNonASCII() {
162+
String asciiString = "";
163+
for (int i = 0; i < 128; i++) {
164+
asciiString += (char) i;
165+
}
166+
assertThat(MergeHelper.removeNonASCII(asciiString)).isEqualTo(asciiString);
167+
assertThat(MergeHelper.removeNonASCII(asciiString + "\ud330\ud803\ud823")).isEqualTo(asciiString);
168+
assertThat(MergeHelper.removeNonASCII("\ud230\ud803\ud123" + asciiString)).isEqualTo(asciiString);
169+
}
170+
123171
@Test
124172
@Owner(developers = NAMAN)
125173
@Category(UnitTests.class)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"name": "jira 🤣😄𝘅␅😴␎basic",
3+
"identifier": "jira_b😨ℬ😁asic",
4+
"description": "",
5+
"orgIdentifier": "def☺️😊ault",
6+
"projectIdentifier": "Local😁😊_Dev",
7+
"tags": {},
8+
"type": "Ji🧑‍🏭👩🏽‍🏭👨🏼‍🔧ra",
9+
"spec": {
10+
"jiraUrl": "👨🏻‍💼🙇🏻‍♂️🙇🏻https://harness.atlassian.net/",
11+
"username": "naman🙇🏻vermah",
12+
"passwordRef": "nvh_do🐁𝘅🍀cker_pass",
13+
"delegateSelectors": []
14+
}
15+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"identifier": "PR_ENV",
3+
"name": "PR ENV𝘅😴😁⚡︎",
4+
"description": "",
5+
"type": "PreP💁🏼‍♀️🐍🐢roduction",
6+
"accountIdentifier": "kmpySmUISimoRrJL6NL73w",
7+
"orgIdentifier": "d🐍🪰🦄efault",
8+
"projectIdentifier": "Loc🐿🐀🍀al_Dev",
9+
"tags": {}
10+
}

0 commit comments

Comments
 (0)