]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-926 Fix computation of number of lines when the latest line is empty
authorSimon Brandhof <simon.brandhof@gmail.com>
Thu, 20 Feb 2014 14:46:52 +0000 (15:46 +0100)
committerSimon Brandhof <simon.brandhof@gmail.com>
Thu, 20 Feb 2014 14:46:52 +0000 (15:46 +0100)
sonar-batch/src/main/java/org/sonar/batch/scan/filesystem/FileMetadata.java
sonar-batch/src/test/java/org/sonar/batch/scan/filesystem/FileMetadataTest.java

index 166db70aecc7affe7c3c8f46db83f657a709c6c2..28e7825ac969abe1ec4a578486cc3e0711afe9ac 100644 (file)
@@ -77,7 +77,7 @@ class FileMetadata {
         md5Digest.update(charToBytesUTF(c));
         i = reader.read();
       }
-      if (c != LINE_FEED) {
+      if (c != (char)-1) {
         lines++;
       }
       String hash = Hex.encodeHexString(md5Digest.digest());
index 2a92f70d84ab2d7533f674c12b54a2ac5beac125..5af76f92bb14c64e34869ec507c60d801e6fdc2f 100644 (file)
@@ -41,6 +41,16 @@ public class FileMetadataTest {
   @Rule
   public TemporaryFolder temp = new TemporaryFolder();
 
+  @Test
+  public void empty_file() throws Exception {
+    File tempFile = temp.newFile();
+    FileUtils.touch(tempFile);
+
+    FileMetadata.Metadata metadata = FileMetadata.INSTANCE.read(tempFile, Charsets.UTF_8);
+    assertThat(metadata.lines).isEqualTo(0);
+    assertThat(metadata.hash).isNotEmpty();
+  }
+
   @Test
   public void windows_without_latest_eol() throws Exception {
     File tempFile = temp.newFile();
@@ -57,7 +67,7 @@ public class FileMetadataTest {
     FileUtils.write(tempFile, "foo\r\nbar\r\nbaz\r\n", Charsets.UTF_8, true);
 
     FileMetadata.Metadata metadata = FileMetadata.INSTANCE.read(tempFile, Charsets.UTF_8);
-    assertThat(metadata.lines).isEqualTo(3);
+    assertThat(metadata.lines).isEqualTo(4);
     assertThat(metadata.hash).isEqualTo(EXPECTED_HASH_WITH_LATEST_EOL);
   }
 
@@ -77,7 +87,7 @@ public class FileMetadataTest {
     FileUtils.write(tempFile, "foo\nbar\nbaz\n", Charsets.UTF_8, true);
 
     FileMetadata.Metadata metadata = FileMetadata.INSTANCE.read(tempFile, Charsets.UTF_8);
-    assertThat(metadata.lines).isEqualTo(3);
+    assertThat(metadata.lines).isEqualTo(4);
     assertThat(metadata.hash).isEqualTo(EXPECTED_HASH_WITH_LATEST_EOL);
   }
 
@@ -87,7 +97,7 @@ public class FileMetadataTest {
     FileUtils.write(tempFile, "foo\nbar\r\nbaz\n", Charsets.UTF_8, true);
 
     FileMetadata.Metadata metadata = FileMetadata.INSTANCE.read(tempFile, Charsets.UTF_8);
-    assertThat(metadata.lines).isEqualTo(3);
+    assertThat(metadata.lines).isEqualTo(4);
     assertThat(metadata.hash).isEqualTo(EXPECTED_HASH_WITH_LATEST_EOL);
   }