Skip to content
Snippets Groups Projects
Commit bef66aca authored by Thiébaud Weksteen's avatar Thiébaud Weksteen Committed by Automerger Merge Worker
Browse files

Merge "AndroidGlobalLintCheckerIntegrationTest: Add missing annotation test"...

Merge "AndroidGlobalLintCheckerIntegrationTest: Add missing annotation test" into main am: 663c9b34 am: 0b550caa am: a256a44f am: 549622b3 am: 95c1f287

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2770398



Change-Id: I6ec0905a309a0ff8fc1857775636512cae5220d2
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 0a8132fb 95c1f287
No related branches found
No related tags found
No related merge requests found
......@@ -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: {
......
/*
* 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() {
}
}
package com.google.android.lint.integration_tests;
interface IFoo {
@EnforcePermission("INTERNET")
void Method();
}
......@@ -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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment