Fix stylelint path resolution on Windows
On Windows, if your checkout is at:
C:\devtools\devtools-frontend
Then the stylelint CLI lives here:
C:\devtools\devtools-frontend\node_modules\stylelint\bin\stylelint.js
Prior to this patch, the lint CSS script was instead trying to use:
C:\node_modules\stylelint\bin\stylelint.js
That is, it went two levels too far up the directory tree. This only
happened on Windows.
This patch avoids the problem altogether by forcing the root directory
to be the current working directory and passing a root-relative glob
instead.
As a drive-by, this patch cleans up the `_getFilesToLint` helper in
`PRESUBMIT.py`.
Bug: chromium:1083142
Change-Id: Ida7d19e4c1cb8954346a3103ce95748f0bc38f00
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2252005
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Mathias Bynens <mathias@chromium.org>
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index a198286..cd7bc84 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -181,10 +181,10 @@
lint_config_files = _getAffectedFiles(input_api, eslint_related_files, [],
['.js', '.py', '.eslintignore'])
- files_to_lint = _getFilesToLint(input_api, output_api, lint_config_files,
- default_linted_directories, ['.js', '.ts'],
- results)
- if len(files_to_lint) is 0:
+ should_bail_out, files_to_lint = _getFilesToLint(
+ input_api, output_api, lint_config_files, default_linted_directories,
+ ['.js', '.ts'], results)
+ if should_bail_out:
return results
results.extend(
@@ -222,10 +222,10 @@
[],
['.json', '.py', '.stylelintignore'])
- files_to_lint = _getFilesToLint(input_api, output_api, lint_config_files,
- default_linted_directories, ['.css'],
- results)
- if len(files_to_lint) is 0:
+ should_bail_out, files_to_lint = _getFilesToLint(
+ input_api, output_api, lint_config_files, default_linted_directories,
+ ['.css'], results)
+ if should_bail_out:
return results
return _ExecuteSubProcess(input_api, output_api, lint_path, files_to_lint,
@@ -410,12 +410,14 @@
def _getFilesToLint(input_api, output_api, lint_config_files,
default_linted_directories, accepted_endings, results):
+ run_full_check = False
files_to_lint = []
# We are changing the lint configuration; run the full check.
if len(lint_config_files) is not 0:
results.append(
output_api.PresubmitNotifyResult('Running full lint check'))
+ run_full_check = True
else:
# Only run the linter on files that are relevant, to save PRESUBMIT time.
files_to_lint = _getAffectedFiles(input_api,
@@ -427,6 +429,5 @@
output_api.PresubmitNotifyResult(
'No affected files for lint check'))
- # Callers should check len(files_to_lint) and bail out if it's 0,
- # otherwise all files get linted.
- return files_to_lint
+ should_bail_out = len(files_to_lint) is 0 and not run_full_check
+ return should_bail_out, files_to_lint