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()