diff options
author | 2019-02-27 15:50:21 +0000 | |
---|---|---|
committer | 2019-02-27 15:50:21 +0000 | |
commit | 57b5479a6b788dc20c45af92dd049b68b0cf06d2 (patch) | |
tree | 1e5e2c99c57ee3e90fe810929cdc1702cc8e5225 /tools/apilint | |
parent | 1b9adbfdd1f18cb16e82f9a6f158d3ac242fffa1 (diff) | |
parent | b1faa0bf5b5bef39886a2ac2b10ca78eea24a006 (diff) |
Merge "apilint: Correctly parse packages with annotations"
Diffstat (limited to 'tools/apilint')
-rw-r--r-- | tools/apilint/apilint.py | 5 | ||||
-rw-r--r-- | tools/apilint/apilint_test.py | 16 |
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() |