| Index: third_party/WebKit/Source/devtools/PRESUBMIT.py
|
| diff --git a/third_party/WebKit/Source/devtools/PRESUBMIT.py b/third_party/WebKit/Source/devtools/PRESUBMIT.py
|
| index c7ebd1a7a94f641115dc8be574b8f9da3427376a..bd9c1116b742389c28fff6da005bf3a35339ae44 100644
|
| --- a/third_party/WebKit/Source/devtools/PRESUBMIT.py
|
| +++ b/third_party/WebKit/Source/devtools/PRESUBMIT.py
|
| @@ -32,10 +32,13 @@ See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
|
| for more details about the presubmit API built into gcl.
|
| """
|
|
|
| +from collections import namedtuple
|
| import sys
|
|
|
| compile_note = "Be sure to run your patch by the compile_frontend.py script prior to committing!"
|
|
|
| +CheckOutput = namedtuple('CheckOutput', ['results', 'has_errors'])
|
| +
|
|
|
| def _CheckNodeAndNPMModules(input_api, output_api):
|
| node_script_path = input_api.os_path.join(input_api.PresubmitLocalPath(), "scripts", "install_node_deps.py")
|
| @@ -45,13 +48,14 @@ def _CheckNodeAndNPMModules(input_api, output_api):
|
| stderr=input_api.subprocess.STDOUT)
|
| out, _ = process.communicate()
|
| if process.returncode != 0:
|
| - return [output_api.PresubmitError(out)]
|
| - return [output_api.PresubmitNotifyResult(out)]
|
| + return CheckOutput([output_api.PresubmitError(out)], has_errors=True)
|
| + return CheckOutput([output_api.PresubmitNotifyResult(out)], has_errors=False)
|
| +
|
|
|
| def _FormatDevtools(input_api, output_api):
|
| affected_front_end_files = _getAffectedFrontEndFiles(input_api)
|
| if len(affected_front_end_files) == 0:
|
| - return []
|
| + return CheckOutput([], has_errors=False)
|
| original_sys_path = sys.path
|
| try:
|
| sys.path = sys.path + [input_api.os_path.join(input_api.PresubmitLocalPath(), "scripts")]
|
| @@ -66,9 +70,9 @@ def _FormatDevtools(input_api, output_api):
|
| args=[node_path, format_path] + [glob_arg, "--output-replacements-xml"])
|
| check_formatting_out, _ = check_formatting_process.communicate()
|
| if check_formatting_process.returncode != 0:
|
| - return [output_api.PresubmitError(check_formatting_out)]
|
| + return CheckOutput([output_api.PresubmitError(check_formatting_out)], has_errors=True)
|
| if "</replacement>" not in check_formatting_out:
|
| - return [output_api.PresubmitNotifyResult("CL is properly formatted")]
|
| + return CheckOutput([output_api.PresubmitNotifyResult("CL is properly formatted")], has_errors=False)
|
|
|
| format_args = [node_path, format_path] + [glob_arg]
|
| format_process = _inputPopen(input_api, format_args)
|
| @@ -86,10 +90,10 @@ def _FormatDevtools(input_api, output_api):
|
| reformat_process = _inputPopen(input_api, format_args)
|
| reformat_process.communicate()
|
|
|
| - return [output_api.PresubmitError("ERROR: Found formatting violations.\n"
|
| + return CheckOutput([output_api.PresubmitError("ERROR: Found formatting violations.\n"
|
| "Ran clang-format on files changed in CL\n"
|
| "Use git status to check the formatting changes"),
|
| - output_api.PresubmitError(format_process_out)]
|
| + output_api.PresubmitError(format_process_out)], has_errors=True)
|
|
|
|
|
| def _CheckDevtoolsStyle(input_api, output_api):
|
| @@ -202,8 +206,19 @@ def _CheckCSSViolations(input_api, output_api):
|
|
|
| def CheckChangeOnUpload(input_api, output_api):
|
| results = []
|
| - results.extend(_CheckNodeAndNPMModules(input_api, output_api))
|
| - results.extend(_FormatDevtools(input_api, output_api))
|
| +
|
| + (node_results, has_errors) = _CheckNodeAndNPMModules(input_api, output_api)
|
| + results.extend(node_results)
|
| + if has_errors:
|
| + results.append(output_api.PresubmitError("ERROR: Bailed out early because error using node.js/npm"))
|
| + return results
|
| +
|
| + (format_results, has_errors) = _FormatDevtools(input_api, output_api)
|
| + results.extend(format_results)
|
| + if has_errors:
|
| + results.append(output_api.PresubmitError("ERROR: Bailed out early because formatting errors were found"))
|
| + return results
|
| +
|
| results.extend(_CheckDevtoolsStyle(input_api, output_api))
|
| results.extend(_CompileDevtoolsFrontend(input_api, output_api))
|
| results.extend(_CheckConvertSVGToPNGHashes(input_api, output_api))
|
| @@ -215,6 +230,7 @@ def CheckChangeOnUpload(input_api, output_api):
|
| def CheckChangeOnCommit(input_api, output_api):
|
| return []
|
|
|
| +
|
| def _getAffectedFrontEndFiles(input_api):
|
| local_paths = [f.AbsoluteLocalPath() for f in input_api.AffectedFiles() if f.Action() != "D"]
|
| devtools_root = input_api.PresubmitLocalPath()
|
| @@ -222,6 +238,7 @@ def _getAffectedFrontEndFiles(input_api):
|
| affected_front_end_files = [file_name for file_name in local_paths if devtools_front_end in file_name and file_name.endswith(".js")]
|
| return [input_api.os_path.relpath(file_name, devtools_root) for file_name in affected_front_end_files]
|
|
|
| +
|
| def _inputPopen(input_api, args):
|
| return input_api.subprocess.Popen(
|
| args,
|
|
|