diff options
author | Jean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com> | 2015-02-13 17:52:51 +0100 |
---|---|---|
committer | Jean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com> | 2015-02-16 13:22:54 +0100 |
commit | 82a84f73980555074f4a6a2de93cfd1428e78e13 (patch) | |
tree | 28c04416def8949c6a42f41fc263833dda0d3c4d | |
parent | dc740d716b371cf8e017df0c37ea4d8f45ae0734 (diff) | |
download | sonarqube-82a84f73980555074f4a6a2de93cfd1428e78e13.tar.gz sonarqube-82a84f73980555074f4a6a2de93cfd1428e78e13.zip |
SONAR-6076 Fix directory path on issues directly set on a directory
3 files changed, 51 insertions, 4 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueResultSetIterator.java b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueResultSetIterator.java index 9c6cf839bae..1ae180e94fe 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueResultSetIterator.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueResultSetIterator.java @@ -25,6 +25,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterators; import com.google.common.collect.Maps; import org.apache.commons.lang.StringUtils; +import org.sonar.api.resources.Scopes; import org.sonar.api.rule.RuleKey; import org.sonar.server.db.DbClient; import org.sonar.server.db.ResultSetIterator; @@ -78,6 +79,7 @@ class IssueResultSetIterator extends ResultSetIterator<IssueDoc> { "p.uuid", "p.module_uuid_path", "p.path", + "p.scope", "i.tags" }; @@ -159,9 +161,11 @@ class IssueResultSetIterator extends ResultSetIterator<IssueDoc> { String moduleUuidPath = rs.getString(23); doc.setModuleUuid(extractModule(moduleUuidPath)); doc.setModuleUuidPath(moduleUuidPath); - doc.setFilePath(rs.getString(24)); - doc.setDirectoryPath(extractDirPath(doc.filePath())); - String tags = rs.getString(25); + String filePath = rs.getString(24); + doc.setFilePath(filePath); + String scope = rs.getString(25); + doc.setDirectoryPath(Scopes.DIRECTORY.equals(scope) ? filePath : extractDirPath(doc.filePath())); + String tags = rs.getString(26); doc.setTags(ImmutableList.copyOf(TAGS_SPLITTER.split(tags == null ? "" : tags))); return doc; } diff --git a/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueResultSetIteratorTest.java b/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueResultSetIteratorTest.java index 979d294955c..4a86910ce06 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueResultSetIteratorTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueResultSetIteratorTest.java @@ -69,7 +69,7 @@ public class IssueResultSetIteratorTest { }); it.close(); - assertThat(issuesByKey).hasSize(3); + assertThat(issuesByKey).hasSize(4); IssueDoc issue = issuesByKey.get("ABC"); assertThat(issue.key()).isEqualTo("ABC"); @@ -78,6 +78,7 @@ public class IssueResultSetIteratorTest { assertThat(issue.projectUuid()).isEqualTo("PROJECT1"); assertThat(issue.moduleUuid()).isEqualTo("PROJECT1"); assertThat(issue.modulePath()).isEqualTo(".PROJECT1."); + assertThat(issue.directoryPath()).isEqualTo("src/main/java"); assertThat(issue.filePath()).isEqualTo("src/main/java/Action.java"); assertThat(issue.tags()).containsOnly("tag1", "tag2", "tag3"); assertThat(issue.debt().toMinutes()).isGreaterThan(0L); @@ -89,6 +90,7 @@ public class IssueResultSetIteratorTest { assertThat(issue.projectUuid()).isEqualTo("PROJECT1"); assertThat(issue.moduleUuid()).isEqualTo("MODULE1"); assertThat(issue.modulePath()).isEqualTo(".PROJECT1.MODULE1."); + assertThat(issue.directoryPath()).isNull(); assertThat(issue.filePath()).isNull(); assertThat(issue.tags()).containsOnly("tag1", "tag2", "tag3"); assertThat(issue.debt().toMinutes()).isGreaterThan(0L); @@ -100,9 +102,22 @@ public class IssueResultSetIteratorTest { assertThat(issue.projectUuid()).isEqualTo("PROJECT1"); assertThat(issue.moduleUuid()).isEqualTo("PROJECT1"); assertThat(issue.modulePath()).isEqualTo(".PROJECT1."); + assertThat(issue.directoryPath()).isEqualTo("src/main/java"); assertThat(issue.filePath()).isEqualTo("src/main/java/Action.java"); assertThat(issue.tags()).isEmpty(); assertThat(issue.debt().toMinutes()).isGreaterThan(0L); + + issue = issuesByKey.get("EFG"); + assertThat(issue.key()).isEqualTo("EFG"); + assertThat(issue.assignee()).isEqualTo("guy1"); + assertThat(issue.componentUuid()).isEqualTo("DIR1"); + assertThat(issue.projectUuid()).isEqualTo("PROJECT1"); + assertThat(issue.moduleUuid()).isEqualTo("MODULE1"); + assertThat(issue.modulePath()).isEqualTo(".PROJECT1.MODULE1."); + assertThat(issue.directoryPath()).isEqualTo("src/main/java"); + assertThat(issue.filePath()).isEqualTo("src/main/java"); + assertThat(issue.tags()).isEmpty(); + assertThat(issue.debt().toMinutes()).isGreaterThan(0L); } @Test diff --git a/server/sonar-server/src/test/resources/org/sonar/server/issue/index/IssueResultSetIteratorTest/shared.xml b/server/sonar-server/src/test/resources/org/sonar/server/issue/index/IssueResultSetIteratorTest/shared.xml index 77ab7442eca..52c576adc8a 100644 --- a/server/sonar-server/src/test/resources/org/sonar/server/issue/index/IssueResultSetIteratorTest/shared.xml +++ b/server/sonar-server/src/test/resources/org/sonar/server/issue/index/IssueResultSetIteratorTest/shared.xml @@ -4,6 +4,7 @@ <projects id="10" scope="PRJ" qualifier="TRK" kee="struts" name="Struts" uuid="PROJECT1" path="[null]" module_uuid_path=".PROJECT1."/> <projects id="50" scope="PRJ" qualifier="BRC" kee="struts:struts-tiles" name="Struts Tiles" uuid="MODULE1" path="[null]" module_uuid_path=".PROJECT1.MODULE1."/> + <projects id="70" scope="DIR" qualifier="DIR" kee="struts:struts-tiles:/" name="src/main/java/" uuid="DIR1" path="src/main/java" module_uuid_path=".PROJECT1.MODULE1."/> <projects id="100" scope="FIL" qualifier="CLA" kee="struts:Action" name="Action" uuid="FILE1" path="src/main/java/Action.java" module_uuid_path=".PROJECT1."/> <issues @@ -87,4 +88,31 @@ issue_update_date="1368828000000" issue_close_date="[null]"/> + <issues + id="4" + kee="EFG" + resolution="FIXED" + status="RESOLVED" + severity="BLOCKER" + manual_severity="[false]" + assignee="guy1" + author_login="guy2" + checksum="FFFFF" + effort_to_fix="[null]" + technical_debt="10" + message="[null]" + line="444" + component_uuid="DIR1" + project_uuid="PROJECT1" + rule_id="200" + reporter="[null]" + issue_attributes="JIRA=http://jira.com" + action_plan_key="PLAN1" + tags="[null]" + created_at="1400000000000" + updated_at="1400000000000" + issue_creation_date="1115848800000" + issue_update_date="1356994800000" + issue_close_date="[null]"/> + </dataset> |