aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>2015-02-13 17:52:51 +0100
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>2015-02-16 13:22:54 +0100
commit82a84f73980555074f4a6a2de93cfd1428e78e13 (patch)
tree28c04416def8949c6a42f41fc263833dda0d3c4d
parentdc740d716b371cf8e017df0c37ea4d8f45ae0734 (diff)
downloadsonarqube-82a84f73980555074f4a6a2de93cfd1428e78e13.tar.gz
sonarqube-82a84f73980555074f4a6a2de93cfd1428e78e13.zip
SONAR-6076 Fix directory path on issues directly set on a directory
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/issue/index/IssueResultSetIterator.java10
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueResultSetIteratorTest.java17
-rw-r--r--server/sonar-server/src/test/resources/org/sonar/server/issue/index/IssueResultSetIteratorTest/shared.xml28
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>