]> source.dussan.org Git - pf4j.git/commitdiff
Fix:when ignoredComments=false, FileUtils.readLines() will return empty list. (#527)
authormiracleshiy <857701789@qq.com>
Wed, 17 May 2023 13:37:17 +0000 (21:37 +0800)
committerGitHub <noreply@github.com>
Wed, 17 May 2023 13:37:17 +0000 (16:37 +0300)
pf4j/src/main/java/org/pf4j/util/FileUtils.java
pf4j/src/test/java/org/pf4j/util/FileUtilsTest.java

index 285a280cf79d8e39405a0c5ec3a23ef378f7cc1b..bde31f4e538989051ee146d829b28490bdf404b7 100644 (file)
@@ -57,7 +57,7 @@ public final class FileUtils {
         try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
             String line;
             while ((line = reader.readLine()) != null) {
-                if (ignoreComments && !line.startsWith("#") && !lines.contains(line)) {
+                if (!(ignoreComments && line.startsWith("#")) && !lines.contains(line)) {
                     lines.add(line);
                 }
             }
index 050b3f13ea8ee17453fa0c49ffb0905d2014e30b..756b3b9cca666cb178a7336c406fe2f94d338a77 100644 (file)
@@ -19,9 +19,11 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
 import org.pf4j.test.PluginZip;
 
+import java.io.*;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.List;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -65,4 +67,32 @@ public class FileUtilsTest {
         assertEquals(folder, FileUtils.expandIfZip(folder));
     }
 
+    @Test
+    public void readLinesIgnoreCommentTest() throws IOException {
+        File file = createSampleFile("test");
+
+        // ignoreComments = true
+        List<String> ignoreCommentsLines = FileUtils.readLines(file.toPath(), true);
+        assertEquals("1 content", ignoreCommentsLines.get(0));
+        assertEquals(2, ignoreCommentsLines.size());
+
+        // ignoreComments = false
+        List<String> lines = FileUtils.readLines(file.toPath(), false);
+        assertEquals("# 1 comment", lines.get(0));
+        assertEquals(4, lines.size());
+        file.deleteOnExit();
+    }
+
+    public File createSampleFile(String fileName) throws IOException {
+        File file = File.createTempFile(fileName, ".txt");
+        file.deleteOnExit();
+
+        try (Writer writer = new OutputStreamWriter(Files.newOutputStream(file.toPath()))) {
+            writer.write("# 1 comment\n");
+            writer.write("1 content\n");
+            writer.write("2 content\n");
+            writer.write("# 2 comment\n");
+        }
+        return file;
+    }
 }