summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiƩbaud Weksteen <tweek@google.com>2023-10-02 23:26:39 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2023-10-02 23:26:39 +0000
commit2768c06f7a8723505cea678706900cbd5f91e615 (patch)
tree0c549b06cc150e076cb2c1c377c0ecc6d0b221b3
parent6ffa5876d1bc51f06991fbac933fbc4bb24d3294 (diff)
parent4c785fe118548bcca484c2132587162cb42b5e1e (diff)
downloadbase-2768c06f7a8723505cea678706900cbd5f91e615.tar.gz
Merge "Add integration test for EnforcePermissionHelperDetector" into main
-rw-r--r--tools/lint/global/integration_tests/Android.bp40
-rw-r--r--tools/lint/global/integration_tests/TestNoAidl/TestNoAidl.java30
-rw-r--r--tools/lint/global/integration_tests/tests.py34
3 files changed, 104 insertions, 0 deletions
diff --git a/tools/lint/global/integration_tests/Android.bp b/tools/lint/global/integration_tests/Android.bp
new file mode 100644
index 000000000000..ca96559ac016
--- /dev/null
+++ b/tools/lint/global/integration_tests/Android.bp
@@ -0,0 +1,40 @@
+// Copyright (C) 2023 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+java_library {
+ name: "AndroidGlobalLintTestNoAidl",
+ srcs: ["TestNoAidl/**/*.java"],
+ libs: [
+ "framework-annotations-lib",
+ ],
+ lint: {
+ // It is expected that lint returns an error when processing this
+ // library. Silence it here, the lint output is verified in tests.py.
+ suppress_exit_code: true,
+ },
+}
+
+python_test_host {
+ name: "AndroidGlobalLintCheckerIntegrationTest",
+ srcs: ["tests.py"],
+ main: "tests.py",
+ data: [
+ ":AndroidGlobalLintTestNoAidl{.lint}",
+ ],
+ version: {
+ py3: {
+ embedded_launcher: true,
+ },
+ },
+}
diff --git a/tools/lint/global/integration_tests/TestNoAidl/TestNoAidl.java b/tools/lint/global/integration_tests/TestNoAidl/TestNoAidl.java
new file mode 100644
index 000000000000..0015f958a78e
--- /dev/null
+++ b/tools/lint/global/integration_tests/TestNoAidl/TestNoAidl.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.google.android.lint.integration_tests;
+
+import android.annotation.EnforcePermission;
+
+/**
+ * A class that use the annotation but does not rely on AIDL.
+ */
+class TestNoAidl {
+
+ @EnforcePermission("INTERNET")
+ void myMethod() {
+ }
+
+}
diff --git a/tools/lint/global/integration_tests/tests.py b/tools/lint/global/integration_tests/tests.py
new file mode 100644
index 000000000000..fc3eeb4f8ed9
--- /dev/null
+++ b/tools/lint/global/integration_tests/tests.py
@@ -0,0 +1,34 @@
+# Copyright 2023 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import pkgutil
+import unittest
+import xml.etree.ElementTree
+
+class TestLinterReports(unittest.TestCase):
+ """Integration tests for the linters used by @EnforcePermission."""
+
+ def test_no_aidl(self):
+ report = pkgutil.get_data("lint", "lint-report.xml").decode()
+ issues = xml.etree.ElementTree.fromstring(report)
+ self.assertEqual(issues.tag, "issues")
+ self.assertEqual(len(issues), 1)
+
+ issue = issues[0]
+ self.assertEqual(issue.attrib["id"], "MisusingEnforcePermissionAnnotation")
+ self.assertEqual(issue.attrib["severity"], "Error")
+
+
+if __name__ == '__main__':
+ unittest.main(verbosity=2)