aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core/src
diff options
context:
space:
mode:
authorEric Giffon <eric.giffon@sonarsource.com>2023-02-28 10:45:39 +0100
committersonartech <sonartech@sonarsource.com>2023-02-28 20:03:06 +0000
commitd088cb12d8c61d794e809c6151c3cb2c9ca75f0f (patch)
tree9ef7abc765552fdb0ca7e18911d7e4f922162ef0 /sonar-core/src
parent837a73e8746d7cb954bba15de2a230d48d59d82b (diff)
downloadsonarqube-d088cb12d8c61d794e809c6151c3cb2c9ca75f0f.tar.gz
sonarqube-d088cb12d8c61d794e809c6151c3cb2c9ca75f0f.zip
SONAR-18267 Fix duplicate issue changes
Diffstat (limited to 'sonar-core/src')
-rw-r--r--sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java19
2 files changed, 20 insertions, 1 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java b/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java
index 931746fa44f..08b92350a10 100644
--- a/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java
+++ b/sonar-core/src/main/java/org/sonar/core/issue/DefaultIssue.java
@@ -503,10 +503,10 @@ public class DefaultIssue implements Issue, Trackable, org.sonar.api.ce.measure.
currentChange.setCreationDate(context.date());
currentChange.setWebhookSource(context.getWebhookSource());
currentChange.setExternalUser(context.getExternalUser());
+ addChange(currentChange);
}
currentChange.setDiff(field, oldValue, newValue);
}
- addChange(currentChange);
return this;
}
diff --git a/sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java b/sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java
index f295cdf7cc6..763be4b20ad 100644
--- a/sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java
+++ b/sonar-core/src/test/java/org/sonar/core/issue/DefaultIssueTest.java
@@ -207,6 +207,25 @@ public class DefaultIssueTest {
}
@Test
+ public void setFieldChange_whenAddingChange_shouldUpdateCurrentChange() {
+ IssueChangeContext issueChangeContext = mock(IssueChangeContext.class);
+ DefaultIssue issue = new DefaultIssue().setKey("AAA");
+
+ issue.setFieldChange(issueChangeContext, "actionPlan", "1.0", "1.1");
+ assertThat(issue.changes()).hasSize(1);
+ FieldDiffs currentChange = issue.currentChange();
+ assertThat(currentChange).isNotNull();
+ assertThat(currentChange.get("actionPlan")).isNotNull();
+ assertThat(currentChange.get("authorLogin")).isNull();
+
+ issue.setFieldChange(issueChangeContext, "authorLogin", null, "testuser");
+ assertThat(issue.changes()).hasSize(1);
+ assertThat(currentChange.get("actionPlan")).isNotNull();
+ assertThat(currentChange.get("authorLogin")).isNotNull();
+ assertThat(currentChange.get("authorLogin").newValue()).isEqualTo("testuser");
+ }
+
+ @Test
public void adding_null_change_has_no_effect() {
DefaultIssue issue = new DefaultIssue();