Loading tools/lint/global/integration_tests/Android.bp +39 −6 Original line number Diff line number Diff line Loading @@ -12,25 +12,58 @@ // See the License for the specific language governing permissions and // limitations under the License. java_library { name: "AndroidGlobalLintTestNoAidl", srcs: ["TestNoAidl/**/*.java"], // Integration tests for @EnforcePermission linters. // Each test defines its own java_library. The XML lint report from this // java_library is wrapped under a Python library with a unique pkg_path (this // is to avoid a name conflict for the report file). All the tests are // referenced and executed by AndroidGlobalLintCheckerIntegrationTest. java_defaults { name: "AndroidGlobalLintIntegrationTestDefault", libs: [ "framework-annotations-lib", ], lint: { // It is expected that lint returns an error when processing this // It is expected that lint returns an error when processing the // library. Silence it here, the lint output is verified in tests.py. suppress_exit_code: true, }, } java_library { name: "AndroidGlobalLintTestNoAidl", srcs: ["TestNoAidl/**/*.java"], defaults: ["AndroidGlobalLintIntegrationTestDefault"], } python_library_host { name: "AndroidGlobalLintTestNoAidl_py", data: [":AndroidGlobalLintTestNoAidl{.lint}"], pkg_path: "no_aidl", } java_library { name: "AndroidGlobalLintTestMissingAnnotation", srcs: [ "TestMissingAnnotation/**/*.java", "TestMissingAnnotation/**/*.aidl", ], defaults: ["AndroidGlobalLintIntegrationTestDefault"], } python_library_host { name: "AndroidGlobalLintTestMissingAnnotation_py", data: [":AndroidGlobalLintTestMissingAnnotation{.lint}"], pkg_path: "missing_annotation", } python_test_host { name: "AndroidGlobalLintCheckerIntegrationTest", srcs: ["tests.py"], main: "tests.py", data: [ ":AndroidGlobalLintTestNoAidl{.lint}", libs: [ "AndroidGlobalLintTestNoAidl_py", "AndroidGlobalLintTestMissingAnnotation_py", ], version: { py3: { Loading tools/lint/global/integration_tests/TestMissingAnnotation/TestMissingAnnotation.java 0 → 100644 +28 −0 Original line number Diff line number Diff line /* * 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; /** * A class that implements an AIDL interface, but is missing the @EnforcePermission annotation. */ class TestMissingAnnotation extends IFoo.Stub { @Override public void Method() { } } tools/lint/global/integration_tests/TestMissingAnnotation/com/google/android/lint/integration_tests/IFoo.aidl 0 → 100644 +7 −0 Original line number Diff line number Diff line package com.google.android.lint.integration_tests; interface IFoo { @EnforcePermission("INTERNET") void Method(); } tools/lint/global/integration_tests/tests.py +14 −2 Original line number Diff line number Diff line Loading @@ -19,16 +19,28 @@ 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() def _read_report(self, pkg_path): report = pkgutil.get_data(pkg_path, "lint/lint-report.xml").decode() issues = xml.etree.ElementTree.fromstring(report) self.assertEqual(issues.tag, "issues") return issues def test_no_aidl(self): issues = self._read_report("no_aidl") self.assertEqual(len(issues), 1) issue = issues[0] self.assertEqual(issue.attrib["id"], "MisusingEnforcePermissionAnnotation") self.assertEqual(issue.attrib["severity"], "Error") def test_missing_annotation(self): issues = self._read_report("missing_annotation") self.assertEqual(len(issues), 1) issue = issues[0] self.assertEqual(issue.attrib["id"], "MissingEnforcePermissionAnnotation") self.assertEqual(issue.attrib["severity"], "Error") if __name__ == '__main__': unittest.main(verbosity=2) Loading
tools/lint/global/integration_tests/Android.bp +39 −6 Original line number Diff line number Diff line Loading @@ -12,25 +12,58 @@ // See the License for the specific language governing permissions and // limitations under the License. java_library { name: "AndroidGlobalLintTestNoAidl", srcs: ["TestNoAidl/**/*.java"], // Integration tests for @EnforcePermission linters. // Each test defines its own java_library. The XML lint report from this // java_library is wrapped under a Python library with a unique pkg_path (this // is to avoid a name conflict for the report file). All the tests are // referenced and executed by AndroidGlobalLintCheckerIntegrationTest. java_defaults { name: "AndroidGlobalLintIntegrationTestDefault", libs: [ "framework-annotations-lib", ], lint: { // It is expected that lint returns an error when processing this // It is expected that lint returns an error when processing the // library. Silence it here, the lint output is verified in tests.py. suppress_exit_code: true, }, } java_library { name: "AndroidGlobalLintTestNoAidl", srcs: ["TestNoAidl/**/*.java"], defaults: ["AndroidGlobalLintIntegrationTestDefault"], } python_library_host { name: "AndroidGlobalLintTestNoAidl_py", data: [":AndroidGlobalLintTestNoAidl{.lint}"], pkg_path: "no_aidl", } java_library { name: "AndroidGlobalLintTestMissingAnnotation", srcs: [ "TestMissingAnnotation/**/*.java", "TestMissingAnnotation/**/*.aidl", ], defaults: ["AndroidGlobalLintIntegrationTestDefault"], } python_library_host { name: "AndroidGlobalLintTestMissingAnnotation_py", data: [":AndroidGlobalLintTestMissingAnnotation{.lint}"], pkg_path: "missing_annotation", } python_test_host { name: "AndroidGlobalLintCheckerIntegrationTest", srcs: ["tests.py"], main: "tests.py", data: [ ":AndroidGlobalLintTestNoAidl{.lint}", libs: [ "AndroidGlobalLintTestNoAidl_py", "AndroidGlobalLintTestMissingAnnotation_py", ], version: { py3: { Loading
tools/lint/global/integration_tests/TestMissingAnnotation/TestMissingAnnotation.java 0 → 100644 +28 −0 Original line number Diff line number Diff line /* * 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; /** * A class that implements an AIDL interface, but is missing the @EnforcePermission annotation. */ class TestMissingAnnotation extends IFoo.Stub { @Override public void Method() { } }
tools/lint/global/integration_tests/TestMissingAnnotation/com/google/android/lint/integration_tests/IFoo.aidl 0 → 100644 +7 −0 Original line number Diff line number Diff line package com.google.android.lint.integration_tests; interface IFoo { @EnforcePermission("INTERNET") void Method(); }
tools/lint/global/integration_tests/tests.py +14 −2 Original line number Diff line number Diff line Loading @@ -19,16 +19,28 @@ 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() def _read_report(self, pkg_path): report = pkgutil.get_data(pkg_path, "lint/lint-report.xml").decode() issues = xml.etree.ElementTree.fromstring(report) self.assertEqual(issues.tag, "issues") return issues def test_no_aidl(self): issues = self._read_report("no_aidl") self.assertEqual(len(issues), 1) issue = issues[0] self.assertEqual(issue.attrib["id"], "MisusingEnforcePermissionAnnotation") self.assertEqual(issue.attrib["severity"], "Error") def test_missing_annotation(self): issues = self._read_report("missing_annotation") self.assertEqual(len(issues), 1) issue = issues[0] self.assertEqual(issue.attrib["id"], "MissingEnforcePermissionAnnotation") self.assertEqual(issue.attrib["severity"], "Error") if __name__ == '__main__': unittest.main(verbosity=2)