From 8a3ccee4918bc1ce5f6bc2dfea51389a59684eb0 Mon Sep 17 00:00:00 2001 From: Bhavik Patel Date: Sat, 6 Jun 2015 15:12:53 +0530 Subject: [PATCH] solution to CLI fails when it could not find output file. solves #1181 --- pom.xml | 2 +- .../com/puppycrawl/tools/checkstyle/Main.java | 4 +-- .../puppycrawl/tools/checkstyle/MainTest.java | 27 ++++++++++++++++--- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 2e8cd3d9c..7d01c52b4 100644 --- a/pom.xml +++ b/pom.xml @@ -644,7 +644,7 @@ .*.DefaultConfiguration10092 .*.DefaultLogger7576 - .*.Main6578 + .*.Main8090 .*.PackageNamesLoader7872 .*.PackageObjectFactory7575 .*.PropertiesExpander5083 diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/Main.java b/src/main/java/com/puppycrawl/tools/checkstyle/Main.java index 067281c25..88a681127 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/Main.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/Main.java @@ -162,8 +162,8 @@ public final class Main { if (cmdLine.hasOption("o")) { final String outputLocation = cmdLine.getOptionValue("o"); final File file = new File(outputLocation); - if (!file.exists()) { - result.add(String.format("Could not find file '%s'.", outputLocation)); + if (file.exists() && !(file.canRead() && file.canWrite())) { + result.add(String.format("Permission denied : '%s'.", outputLocation)); } } final List files = getFilesToProcess(cmdLine.getArgs()); diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/MainTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/MainTest.java index ec60850b8..1a69669fd 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/MainTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/MainTest.java @@ -249,17 +249,16 @@ public class MainTest { @Test public void testExistingTargetFilePlainOutputToNonExistingFile() throws Exception { - exit.expectSystemExitWithStatus(1); + exit.expectSystemExitWithStatus(0); exit.checkAssertionAfterwards(new Assertion() { public void checkAssertion() { - assertEquals("Could not find file 'myjava.java'." + System.lineSeparator(), - standardLog.getLog()); + assertEquals("", standardLog.getLog()); assertEquals("", errorLog.getLog()); } }); Main.main("-c", "src/test/resources/com/puppycrawl/tools/checkstyle/config-classname.xml", "-f", "plain", - "-o", "myjava.java", + "-o", temporaryFolder.getRoot() + "/output.txt", "src/test/resources/com/puppycrawl/tools/checkstyle/InputMain.java"); } @@ -283,6 +282,26 @@ public class MainTest { "src/test/resources/com/puppycrawl/tools/checkstyle/InputMain.java"); } + @Test + public void testExistingTargetFilePlainOutputToFileWithoutRwPermissions() + throws Exception { + final File file = temporaryFolder.newFile("file.output"); + file.setReadable(false, false); + file.setWritable(false, false); + exit.expectSystemExitWithStatus(1); + exit.checkAssertionAfterwards(new Assertion() { + public void checkAssertion() throws IOException { + assertEquals("Permission denied : '" + file.getCanonicalPath() + "'." + + System.lineSeparator(), standardLog.getLog()); + assertEquals("", errorLog.getLog()); + } + }); + Main.main("-c", "src/test/resources/com/puppycrawl/tools/checkstyle/config-classname.xml", + "-f", "plain", + "-o", file.getCanonicalPath(), + "src/test/resources/com/puppycrawl/tools/checkstyle/InputMain.java"); + } + @Test public void testExistingTargetFilePlainOutputProperties() throws Exception {