summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adrian Roos <roosa@google.com> 2019-02-27 08:32:43 -0800
committer android-build-merger <android-build-merger@google.com> 2019-02-27 08:32:43 -0800
commitb610eccf3c83dd39e82db937974bf17298c2799e (patch)
tree1e141e515c0e02b8a0e946685bce62686b700e3f
parentd43e8ded1c362552587597dbdab933640bad6ac5 (diff)
parentf9050da20fb9cc4ad81b20b6d36257b9dabd0e60 (diff)
Merge "apilint: Correctly parse packages with annotations" am: 57b5479a6b am: 436fe4c8f0
am: f9050da20f Change-Id: Ib3eaf5ca57cc03dbcbb70bdac73a96b77c22fd32
-rw-r--r--tools/apilint/apilint.py5
-rw-r--r--tools/apilint/apilint_test.py16
2 files changed, 19 insertions, 2 deletions
diff --git a/tools/apilint/apilint.py b/tools/apilint/apilint.py
index 59e89f515e82..4c02d94542d0 100644
--- a/tools/apilint/apilint.py
+++ b/tools/apilint/apilint.py
@@ -208,13 +208,14 @@ class Class():
class Package():
+ NAME = re.compile("package(?: .*)? ([A-Za-z.]+)")
+
def __init__(self, line, raw, blame):
self.line = line
self.raw = raw.strip(" {;")
self.blame = blame
- raw = raw.split()
- self.name = raw[raw.index("package")+1]
+ self.name = Package.NAME.match(raw).group(1)
self.name_path = self.name.split(".")
def __repr__(self):
diff --git a/tools/apilint/apilint_test.py b/tools/apilint/apilint_test.py
index 3716bf9f5d6f..c10ef15d02ad 100644
--- a/tools/apilint/apilint_test.py
+++ b/tools/apilint/apilint_test.py
@@ -369,5 +369,21 @@ class V2ParserTests(unittest.TestCase):
m = self._method('method @NonNull public @NonNull String @NonNull [] split(@NonNull String, int);')
self.assertEquals('java.lang.String[]', m.typ)
+class PackageTests(unittest.TestCase):
+ def _package(self, raw):
+ return apilint.Package(123, raw, "blame")
+
+ def test_regular_package(self):
+ p = self._package("package an.pref.int {")
+ self.assertEquals('an.pref.int', p.name)
+
+ def test_annotation_package(self):
+ p = self._package("package @RestrictTo(a.b.C) an.pref.int {")
+ self.assertEquals('an.pref.int', p.name)
+
+ def test_multi_annotation_package(self):
+ p = self._package("package @Rt(a.b.L_G_P) @RestrictTo(a.b.C) an.pref.int {")
+ self.assertEquals('an.pref.int', p.name)
+
if __name__ == "__main__":
unittest.main()