From 3c2e7e297e9c6c00de5c831285b7b7d79d4138c9 Mon Sep 17 00:00:00 2001 From: miracleshiy <857701789@qq.com> Date: Wed, 17 May 2023 21:37:17 +0800 Subject: [PATCH] =?utf8?q?Fix=EF=BC=9Awhen=20ignoredComments=3Dfalse,=20Fi?= =?utf8?q?leUtils.readLines()=20will=20return=20empty=20list.=20(#527)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../main/java/org/pf4j/util/FileUtils.java | 2 +- .../java/org/pf4j/util/FileUtilsTest.java | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/pf4j/src/main/java/org/pf4j/util/FileUtils.java b/pf4j/src/main/java/org/pf4j/util/FileUtils.java index 285a280..bde31f4 100644 --- a/pf4j/src/main/java/org/pf4j/util/FileUtils.java +++ b/pf4j/src/main/java/org/pf4j/util/FileUtils.java @@ -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); } } diff --git a/pf4j/src/test/java/org/pf4j/util/FileUtilsTest.java b/pf4j/src/test/java/org/pf4j/util/FileUtilsTest.java index 050b3f1..756b3b9 100644 --- a/pf4j/src/test/java/org/pf4j/util/FileUtilsTest.java +++ b/pf4j/src/test/java/org/pf4j/util/FileUtilsTest.java @@ -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 ignoreCommentsLines = FileUtils.readLines(file.toPath(), true); + assertEquals("1 content", ignoreCommentsLines.get(0)); + assertEquals(2, ignoreCommentsLines.size()); + + // ignoreComments = false + List 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; + } } -- 2.39.5