]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-2657 Don't save file hashes if there is no file in project
authorJulien HENRY <julien.henry@sonarsource.com>
Mon, 7 Oct 2013 13:02:16 +0000 (15:02 +0200)
committerJulien HENRY <julien.henry@sonarsource.com>
Mon, 7 Oct 2013 13:03:40 +0000 (15:03 +0200)
like in a multimodule root

plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/sensors/FileHashSensor.java
plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/sensors/FileHashSensorTest.java

index 09f8215f0533d8ce8c956d1f0e58073d1a06188c..df5cd76ade53a19a4ea7910f53ebeafd41aef520 100644 (file)
@@ -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) {
index f57dae2e809a5b33b5aed075686aac4cadbbd67f..b46519c27d3f5004a910a2ebcca5a9268918166c 100644 (file)
@@ -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());
+  }
 }