From bee5991121731b9f9ad4f4799c7a3f7a651ff103 Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Sun, 12 Jun 2016 19:38:54 +0200 Subject: [PATCH] Add unit test for inputfilepath parameter --- .../main/java/net/sourceforge/pmd/PMD.java | 6 +-- .../net/sourceforge/pmd/PMDConfiguration.java | 6 +++ .../java/net/sourceforge/pmd/cli/PMDTest.java | 50 +++++++++++++++++++ .../net/sourceforge/pmd/cli/filelist.txt | 1 + .../net/sourceforge/pmd/cli/filelist2.txt | 3 ++ .../sourceforge/pmd/cli/src/anotherfile.dummy | 1 + .../sourceforge/pmd/cli/src/somefile.dummy | 1 + 7 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 pmd-core/src/test/java/net/sourceforge/pmd/cli/PMDTest.java create mode 100644 pmd-core/src/test/resources/net/sourceforge/pmd/cli/filelist.txt create mode 100644 pmd-core/src/test/resources/net/sourceforge/pmd/cli/filelist2.txt create mode 100644 pmd-core/src/test/resources/net/sourceforge/pmd/cli/src/anotherfile.dummy create mode 100644 pmd-core/src/test/resources/net/sourceforge/pmd/cli/src/somefile.dummy diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/PMD.java b/pmd-core/src/main/java/net/sourceforge/pmd/PMD.java index eef7dd1824..2051d34cb9 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/PMD.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/PMD.java @@ -431,11 +431,9 @@ public class PMD { } else { String filePaths = FileUtils.readFileToString(new File(inputFilePath)); filePaths = StringUtils.trimToEmpty(filePaths); + filePaths = filePaths.replaceAll("\\r?\\n", ","); + filePaths = filePaths.replaceAll(",+", ","); - if (null == filePaths){ - LOG.log(Level.SEVERE, "Problem with Input File Path", inputFilePath); - throw new RuntimeException("Problem with Input File Path: " + inputFilePath); - } files.addAll(FileUtil.collectFiles(filePaths, fileSelector)); } } catch (IOException ex) { diff --git a/pmd-core/src/main/java/net/sourceforge/pmd/PMDConfiguration.java b/pmd-core/src/main/java/net/sourceforge/pmd/PMDConfiguration.java index a3f64c7ef8..21b911a41e 100644 --- a/pmd-core/src/main/java/net/sourceforge/pmd/PMDConfiguration.java +++ b/pmd-core/src/main/java/net/sourceforge/pmd/PMDConfiguration.java @@ -314,6 +314,12 @@ public class PMDConfiguration extends AbstractConfiguration { return inputFilePath; } + /** + * The input file path points to a single file, which contains a + * comma-separated list of source file names to process. + * + * @param inputFilePath path to the file + */ public void setInputFilePath(String inputFilePath) { this.inputFilePath = inputFilePath; } diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/cli/PMDTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/cli/PMDTest.java new file mode 100644 index 0000000000..290b9c26ca --- /dev/null +++ b/pmd-core/src/test/java/net/sourceforge/pmd/cli/PMDTest.java @@ -0,0 +1,50 @@ +/** + * BSD-style license; for more info see http://pmd.sourceforge.net/license.html + */ + +package net.sourceforge.pmd.cli; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.junit.Assert; +import org.junit.Test; + +import net.sourceforge.pmd.PMD; +import net.sourceforge.pmd.PMDConfiguration; +import net.sourceforge.pmd.lang.DummyLanguageModule; +import net.sourceforge.pmd.lang.Language; +import net.sourceforge.pmd.util.datasource.DataSource; + +public class PMDTest { + @Test + public void testGetApplicableFiles() { + Set languages = new HashSet<>(); + languages.add(new DummyLanguageModule()); + + PMDConfiguration configuration = new PMDConfiguration(); + configuration.setInputFilePath("src/test/resources/net/sourceforge/pmd/cli/filelist.txt"); + + List applicableFiles = PMD.getApplicableFiles(configuration, languages); + Assert.assertEquals(2, applicableFiles.size()); + Assert.assertTrue(applicableFiles.get(0).getNiceFileName(false, "").endsWith("somefile.dummy")); + Assert.assertTrue(applicableFiles.get(1).getNiceFileName(false, "").endsWith("anotherfile.dummy")); + } + + @Test + public void testGetApplicableFilesMultipleLines() { + Set languages = new HashSet<>(); + languages.add(new DummyLanguageModule()); + + PMDConfiguration configuration = new PMDConfiguration(); + configuration.setInputFilePath("src/test/resources/net/sourceforge/pmd/cli/filelist2.txt"); + + List applicableFiles = PMD.getApplicableFiles(configuration, languages); + Assert.assertEquals(3, applicableFiles.size()); + Assert.assertTrue(applicableFiles.get(0).getNiceFileName(false, "").endsWith("somefile.dummy")); + Assert.assertTrue(applicableFiles.get(1).getNiceFileName(false, "").endsWith("anotherfile.dummy")); + Assert.assertTrue(applicableFiles.get(2).getNiceFileName(false, "").endsWith("somefile.dummy")); + } + +} diff --git a/pmd-core/src/test/resources/net/sourceforge/pmd/cli/filelist.txt b/pmd-core/src/test/resources/net/sourceforge/pmd/cli/filelist.txt new file mode 100644 index 0000000000..cc7f4823b5 --- /dev/null +++ b/pmd-core/src/test/resources/net/sourceforge/pmd/cli/filelist.txt @@ -0,0 +1 @@ +src/test/resources/net/sourceforge/pmd/cli/src/somefile.dummy,src/test/resources/net/sourceforge/pmd/cli/src/anotherfile.dummy \ No newline at end of file diff --git a/pmd-core/src/test/resources/net/sourceforge/pmd/cli/filelist2.txt b/pmd-core/src/test/resources/net/sourceforge/pmd/cli/filelist2.txt new file mode 100644 index 0000000000..7897f05369 --- /dev/null +++ b/pmd-core/src/test/resources/net/sourceforge/pmd/cli/filelist2.txt @@ -0,0 +1,3 @@ +src/test/resources/net/sourceforge/pmd/cli/src/somefile.dummy, +src/test/resources/net/sourceforge/pmd/cli/src/anotherfile.dummy +src/test/resources/net/sourceforge/pmd/cli/src/somefile.dummy \ No newline at end of file diff --git a/pmd-core/src/test/resources/net/sourceforge/pmd/cli/src/anotherfile.dummy b/pmd-core/src/test/resources/net/sourceforge/pmd/cli/src/anotherfile.dummy new file mode 100644 index 0000000000..c3d7ac9496 --- /dev/null +++ b/pmd-core/src/test/resources/net/sourceforge/pmd/cli/src/anotherfile.dummy @@ -0,0 +1 @@ +Another file for testing diff --git a/pmd-core/src/test/resources/net/sourceforge/pmd/cli/src/somefile.dummy b/pmd-core/src/test/resources/net/sourceforge/pmd/cli/src/somefile.dummy new file mode 100644 index 0000000000..901f2e4bd0 --- /dev/null +++ b/pmd-core/src/test/resources/net/sourceforge/pmd/cli/src/somefile.dummy @@ -0,0 +1 @@ +Some file for testing