From 1c3ee1a154fc63a127662ba9a83198c094075da9 Mon Sep 17 00:00:00 2001 From: fzaiser Date: Wed, 18 Oct 2017 10:27:49 -0400 Subject: Skylint: show a better error message if a file is not found RELNOTES: none PiperOrigin-RevId: 172599144 --- src/test/skylark/skylint/skylint_test.py | 10 ++++++++++ .../com/google/devtools/skylark/skylint/Skylint.java | 17 +++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/test/skylark/skylint/skylint_test.py b/src/test/skylark/skylint/skylint_test.py index 82172177cf..eccf2290d5 100644 --- a/src/test/skylark/skylint/skylint_test.py +++ b/src/test/skylark/skylint/skylint_test.py @@ -39,6 +39,16 @@ class SkylintTest(unittest.TestCase): issues = e.output self.assertIn("no module docstring", issues) + def testNonexistingFile(self): + try: + output = "" + subprocess.check_output( + [testenv.SKYLINT_BINARY_PATH, "does_not_exist.bzl"], + stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as e: + output = e.output + self.assertEqual("File not found: does_not_exist.bzl\n", output) + def testDisablingChecker(self): output = subprocess.check_output([ testenv.SKYLINT_BINARY_PATH, "--disable=docstring", diff --git a/src/tools/skylark/java/com/google/devtools/skylark/skylint/Skylint.java b/src/tools/skylark/java/com/google/devtools/skylark/skylint/Skylint.java index efef66f75f..010d28460d 100644 --- a/src/tools/skylark/java/com/google/devtools/skylark/skylint/Skylint.java +++ b/src/tools/skylark/java/com/google/devtools/skylark/skylint/Skylint.java @@ -15,6 +15,7 @@ package com.google.devtools.skylark.skylint; import java.io.IOException; +import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; @@ -22,7 +23,7 @@ import java.util.List; /** The main class for the skylint binary. */ public class Skylint { - public static void main(String[] args) throws IOException { + public static void main(String[] args) { List paths = new ArrayList<>(); List disabledChecks = new ArrayList<>(); for (String arg : args) { @@ -44,7 +45,19 @@ public class Skylint { linter.disable(checkerName); } for (Path path : paths) { - List issues = linter.lint(path); + List issues; + try { + issues = linter.lint(path); + } catch (IOException e) { + issuesFound = true; + if (e instanceof NoSuchFileException) { + System.err.println("File not found: " + path); + } else { + System.err.println("Error trying to read " + path); + e.printStackTrace(); + } + continue; + } if (!issues.isEmpty()) { issuesFound = true; for (Issue issue : issues) { -- cgit v1.2.3