| # Copyright 2020 The ChromiumOS Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # For details on the depot tools provided presubmit API see: |
| # http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts |
| |
| """Hook to run unit tests on upload.""" |
| |
| import sys |
| |
| |
| sys.path.insert(1, "presubmit") |
| # pylint: disable=wrong-import-position |
| import presubmits |
| |
| |
| # pylint: enable=wrong-import-position |
| |
| |
| USE_PYTHON3 = True |
| |
| |
| def CheckGenerated(input_api, output_api): |
| """Checks all scripts that produce generated output. |
| |
| Checks that all of the scripts that produce generated output in this |
| repository have been ran and that the generated output is up to date. |
| |
| Args: |
| input_api: InputApi, provides information about the change. |
| output_api: OutputApi, provides the mechanism for returning a response. |
| |
| Returns: |
| list of PresubmitError, or empty list if no errors. |
| """ |
| results = [] |
| |
| # Starting with generate.sh. |
| results.extend(presubmits.CheckGenerated(input_api, output_api)) |
| |
| # The generate.sh in this repo can create files. Make sure repo is clean. |
| results.extend(presubmits.CheckUntracked(input_api, output_api)) |
| |
| return results |
| |
| |
| def CommonChecks(input_api, output_api): |
| """Code to check the generated code and .star files.""" |
| file_filter = lambda x: x.LocalPath() == "infra/config/recipes.cfg" |
| results = input_api.canned_checks.CheckJsonParses( |
| input_api, output_api, file_filter=file_filter |
| ) |
| results.extend(CheckGenerated(input_api, output_api)) |
| for script in [ |
| "./run_py_unittests.sh", |
| "./run_go_unittests.sh", |
| "vpython3 -vpython-spec .vpython presubmit/check_dut_attributes.py", |
| ]: |
| results.extend(presubmits.CheckScript(input_api, output_api, script)) |
| return results |
| |
| |
| def CheckChangeOnUpload(input_api, output_api): |
| """Upload hook. |
| |
| Normally disabled on ChromeOS, but used in config to validate the generated code. |
| |
| """ |
| return CommonChecks(input_api, output_api) |
| |
| |
| def CheckChangeOnCommit(input_api, output_api): |
| """Commit hook.""" |
| return CommonChecks(input_api, output_api) |