From 617fceff874f700ea12a90a2f1ad3ca083481ae9 Mon Sep 17 00:00:00 2001 From: Eric Hartmann Date: Fri, 13 Oct 2017 18:18:41 +0200 Subject: [PATCH] SONAR-7942 When there is no SCM data sonar.issues.defaultAssigneeLogin must be used --- .../task/projectanalysis/issue/IssueAssigner.java | 14 ++++++++------ .../projectanalysis/issue/IssueAssignerTest.java | 11 +++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/IssueAssigner.java b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/IssueAssigner.java index e776ca2d766..bf92afba817 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/IssueAssigner.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/task/projectanalysis/issue/IssueAssigner.java @@ -70,18 +70,20 @@ public class IssueAssigner extends IssueVisitor { @Override public void onIssue(Component component, DefaultIssue issue) { - boolean authorWasSet = false; if (issue.authorLogin() == null) { loadScmChangesets(component); String scmAuthor = guessScmAuthor(issue); + if (!Strings.isNullOrEmpty(scmAuthor)) { issueUpdater.setNewAuthor(issue, scmAuthor, changeContext); - authorWasSet = true; } - } - if (authorWasSet && issue.assignee() == null) { - String assigneeLogin = StringUtils.defaultIfEmpty(scmAccountToUser.getNullable(issue.authorLogin()), defaultAssignee.loadDefaultAssigneeLogin()); - issueUpdater.setNewAssignee(issue, assigneeLogin, changeContext); + + if (issue.assignee() == null) { + String author = issue.authorLogin() == null ? null : scmAccountToUser.getNullable(issue.authorLogin()); + String assigneeLogin = StringUtils.defaultIfEmpty(author, defaultAssignee.loadDefaultAssigneeLogin()); + + issueUpdater.setNewAssignee(issue, assigneeLogin, changeContext); + } } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/issue/IssueAssignerTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/issue/IssueAssignerTest.java index 7780f069ae2..5b29e39e914 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/issue/IssueAssignerTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/task/projectanalysis/issue/IssueAssignerTest.java @@ -158,6 +158,17 @@ public class IssueAssignerTest { assertThat(issue.assignee()).isEqualTo("Henry V"); } + @Test + public void when_noscm_data_is_available_defaultAssignee_should_be_used() throws Exception { + DefaultIssue issue = new DefaultIssue().setLine(null); + + when(defaultAssignee.loadDefaultAssigneeLogin()).thenReturn("DefaultAssignee"); + underTest.onIssue(FILE, issue); + + assertThat(issue.assignee()).isEqualTo("DefaultAssignee"); + } + + @Test public void set_last_committer_when_line_is_bigger_than_changeset_size() throws Exception { addScmUser("john", "John C"); -- 2.39.5