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 {