aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2013-10-07 15:02:16 +0200
committerJulien HENRY <julien.henry@sonarsource.com>2013-10-07 15:03:40 +0200
commit1fcbb5e85e979eea35bafed165a3e89d1058bdd8 (patch)
treef85a43f067286516031e40c071b1ae1e58e168cd
parenteb61eba8a4e2dead826feca34b22ca8fc5fa0ffb (diff)
downloadsonarqube-1fcbb5e85e979eea35bafed165a3e89d1058bdd8.tar.gz
sonarqube-1fcbb5e85e979eea35bafed165a3e89d1058bdd8.zip
SONAR-2657 Don't save file hashes if there is no file in project
like in a multimodule root
-rw-r--r--plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/FileHashSensor.java6
-rw-r--r--plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/FileHashSensorTest.java12
2 files changed, 17 insertions, 1 deletions
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/FileHashSensor.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/FileHashSensor.java
index 09f8215f053..df5cd76ade5 100644
--- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/FileHashSensor.java
+++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/FileHashSensor.java
@@ -19,6 +19,7 @@
*/
package org.sonar.plugins.core.sensors;
+import org.apache.commons.lang.StringUtils;
import org.sonar.api.batch.Sensor;
import org.sonar.api.batch.SensorContext;
import org.sonar.api.resources.Project;
@@ -63,7 +64,10 @@ public final class FileHashSensor implements Sensor {
StringBuilder fileHashMap = new StringBuilder();
analyse(fileHashMap, project, FileType.SOURCE);
analyse(fileHashMap, project, FileType.TEST);
- componentDataCache.setStringData(project.getKey(), SnapshotDataType.FILE_HASH.getValue(), fileHashMap.toString());
+ String fileHashes = fileHashMap.toString();
+ if (StringUtils.isNotBlank(fileHashes)) {
+ componentDataCache.setStringData(project.getKey(), SnapshotDataType.FILE_HASH.getValue(), fileHashes);
+ }
}
private void analyse(StringBuilder fileHashMap, Project project, FileType fileType) {
diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/FileHashSensorTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/FileHashSensorTest.java
index f57dae2e809..b46519c27d3 100644
--- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/FileHashSensorTest.java
+++ b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/FileHashSensorTest.java
@@ -42,7 +42,9 @@ import java.util.Collections;
import static org.fest.assertions.Assertions.assertThat;
import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -99,4 +101,14 @@ public class FileHashSensorTest {
"src/com/foo/Bar.java=barhash\n"
+ "src/com/foo/Foo.java=foohash\n");
}
+
+ @Test
+ public void dont_save_hashes_if_no_file() throws Exception {
+ File baseDir = temp.newFolder();
+ when(fileSystem.baseDir()).thenReturn(baseDir);
+ when(fileSystem.files(any(FileQuery.class))).thenReturn(Collections.<File> emptyList());
+ sensor.analyse(project, mock(SensorContext.class));
+
+ verify(componentDataCache, never()).setStringData(anyString(), anyString(), anyString());
+ }
}