From: Simon Brandhof Date: Sun, 5 Aug 2018 21:02:28 +0000 (+0200) Subject: SONAR-11077 ignore size of symlinks in FileUtils2#sizeOf() X-Git-Tag: 7.5~651 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=04789e3182ecf712121dc9f329ef01c3d1b914cf;p=sonarqube.git SONAR-11077 ignore size of symlinks in FileUtils2#sizeOf() --- diff --git a/server/sonar-process/src/main/java/org/sonar/process/FileUtils2.java b/server/sonar-process/src/main/java/org/sonar/process/FileUtils2.java index d275c960fa9..779b48d0bbf 100644 --- a/server/sonar-process/src/main/java/org/sonar/process/FileUtils2.java +++ b/server/sonar-process/src/main/java/org/sonar/process/FileUtils2.java @@ -199,7 +199,11 @@ public final class FileUtils2 { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { - size += attrs.size(); + // size is specified on regular files only + // https://docs.oracle.com/javase/8/docs/api/java/nio/file/attribute/BasicFileAttributes.html#size-- + if (attrs.isRegularFile()) { + size += attrs.size(); + } return FileVisitResult.CONTINUE; } } diff --git a/server/sonar-process/src/test/java/org/sonar/process/FileUtils2Test.java b/server/sonar-process/src/test/java/org/sonar/process/FileUtils2Test.java index 890a21d782a..2c7b9af0845 100644 --- a/server/sonar-process/src/test/java/org/sonar/process/FileUtils2Test.java +++ b/server/sonar-process/src/test/java/org/sonar/process/FileUtils2Test.java @@ -281,6 +281,21 @@ public class FileUtils2Test { FileUtils2.sizeOf(path); } + @Test + public void sizeOf_ignores_size_of_non_regular_files() throws IOException { + File outside = temporaryFolder.newFile(); + FileUtils.write(outside, "outside!!!", UTF_8); + File dir = temporaryFolder.newFolder(); + File child = new File(dir, "child1.txt"); + FileUtils.write(child, "inside!!!", UTF_8); + File symlink = new File(dir, "child2.txt"); + Files.createSymbolicLink(symlink.toPath(), outside.toPath()); + + assertThat(FileUtils2.sizeOf(dir.toPath())) + .isPositive() + .isEqualTo(FileUtils2.sizeOf(child.toPath())); + } + private void expectDirectoryCanNotBeNullNPE() { expectedException.expect(NullPointerException.class); expectedException.expectMessage("Directory can not be null");