From b9bfdfd17cb2bbfc7df7131438d4a77bea8a98e5 Mon Sep 17 00:00:00 2001 From: Mark Banner Date: Fri, 20 Mar 2020 19:33:46 +0000 Subject: [PATCH] Bug 1623862 - Properly handle errors when the ESLint process fails. r=ahal In the failure case, errors has value, but output doesn't. So previously we were printing the errors but returning success to the lint handler. Differential Revision: https://phabricator.services.mozilla.com/D67670 --HG-- extra : moz-landing-system : lando --- tools/lint/eslint/__init__.py | 5 ++++- tools/lint/test/files/eslint/import/bad_import.js | 1 + tools/lint/test/test_eslint.py | 7 ++++++- 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 tools/lint/test/files/eslint/import/bad_import.js diff --git a/tools/lint/eslint/__init__.py b/tools/lint/eslint/__init__.py index ddef1035aed5..c32c53af130a 100644 --- a/tools/lint/eslint/__init__.py +++ b/tools/lint/eslint/__init__.py @@ -102,7 +102,10 @@ def lint(paths, config, binary=None, fix=None, setup=None, **lintargs): if errors: errors = errors.decode(encoding, "replace") - print(errors) + print(ESLINT_ERROR_MESSAGE.format(errors)) + + if proc.returncode >= 2: + return 1 if not output: return [] # no output means success diff --git a/tools/lint/test/files/eslint/import/bad_import.js b/tools/lint/test/files/eslint/import/bad_import.js new file mode 100644 index 000000000000..e2a8ec8de19d --- /dev/null +++ b/tools/lint/test/files/eslint/import/bad_import.js @@ -0,0 +1 @@ +/* import-globals-from notpresent/notpresent.js */ diff --git a/tools/lint/test/test_eslint.py b/tools/lint/test/test_eslint.py index 9470aea3492b..2ce7a7c222ea 100644 --- a/tools/lint/test/test_eslint.py +++ b/tools/lint/test/test_eslint.py @@ -6,7 +6,7 @@ LINTER = 'eslint' def test_lint_with_global_exclude(lint, config, paths): - config['exclude'] = ['subdir'] + config['exclude'] = ['subdir', 'import'] results = lint(paths(), config=config, root=build.topsrcdir) assert len(results) == 0 @@ -21,5 +21,10 @@ def test_no_files_to_lint(lint, config, paths): assert len(results) == 1 +def test_bad_import(lint, config, paths): + results = lint(paths('import'), config=config, root=build.topsrcdir) + assert results == 1 + + if __name__ == '__main__': mozunit.main()