hooks: add alint support In order to roll it out to all Android, Alint needs to have a method to run it in hooks.py Bug: 433460364 Test: unittests Change-Id: I301736d2946b5bcb8fb2663229745958d9386c6d Reviewed-on: https://gerrit-review.googlesource.com/c/git-repohooks/+/494721 Reviewed-by: Damian Turczynski <damtur@google.com> Commit-Queue: Doğancan Emek <dogancanemek@google.com> Reviewed-by: Mike Frysinger <vapier@google.com> Tested-by: Doğancan Emek <dogancanemek@google.com>
diff --git a/README.md b/README.md index 26bd812..40afc20 100644 --- a/README.md +++ b/README.md
@@ -178,6 +178,7 @@ canned hooks already included geared towards AOSP style guidelines. * `aidl_format`: Run AIDL files (.aidl) through `aidl-format`. +* `alint`: Run AyeAye (Google Android service) analyzers on the CL to be uploaded. * `aosp_license`: Check if all new-added file have valid AOSP license headers. * `android_test_mapping_format`: Validate TEST_MAPPING files in Android source code. Refer to go/test-mapping for more details. @@ -280,6 +281,7 @@ distros/versions. The following tools are recognized: * `aidl-format`: used for the `aidl_format` builtin hook. +* `alint`: used for the `alint` builtin hook. * `android-test-mapping-format`: used for the `android_test_mapping_format` builtin hook. * `black`: used for the `black` builtin hook.
diff --git a/rh/hooks.py b/rh/hooks.py index 8f128b0..97c744f 100644 --- a/rh/hooks.py +++ b/rh/hooks.py
@@ -1288,10 +1288,23 @@ return ret +def check_alint(project, commit, _desc, diff, options=None): + """Runs alint on the commit.""" + if options.args(): + raise ValueError("alint check takes no options") + + alint_path = options.tool_path("alint") + + cmd = [alint_path] + options.args((), diff) + ["--commit", commit] + + return _check_cmd("alint", project, commit, cmd) + + # Hooks that projects can opt into. # Note: Make sure to keep the top level README.md up to date when adding more! BUILTIN_HOOKS = { "aidl_format": check_aidl_format, + "alint": check_alint, "android_test_mapping_format": check_android_test_mapping, "aosp_license": check_aosp_license, "black": check_black, @@ -1320,6 +1333,7 @@ # Note: Make sure to keep the top level README.md up to date when adding more! TOOL_PATHS = { "aidl-format": "aidl-format", + "alint": "alint", "android-test-mapping-format": os.path.join( TOOLS_DIR, "android_test_mapping_format.py" ),
diff --git a/rh/hooks_unittest.py b/rh/hooks_unittest.py index 77a1880..382911e 100755 --- a/rh/hooks_unittest.py +++ b/rh/hooks_unittest.py
@@ -1174,6 +1174,18 @@ ) self.assertIsNotNone(ret) + def test_alint(self, mock_check, mock_run): + """Verify the alint builtin hook.""" + commit = """Add test to the manifest + Bug: 11111 + Test: ... + Flag: ...""" + diff = [rh.git.RawDiffEntry(file="file.txt", status="A")] + ret = rh.hooks.check_alint( + self.project, commit, "desc", diff, options=self.options + ) + self.assertIsNotNone(ret) + if __name__ == "__main__": unittest.main()