signatures: future-proof fetching app ID info from APK
We're not using platformBuildVersionName and it might go away just like it appeared: with no good reason or announcement.
This commit is contained in:
parent
88e24dc4e3
commit
e75bf70be6
|
@ -1990,7 +1990,7 @@ def get_apk_id_aapt(apkfile):
|
|||
:param apkfile: path to an APK file.
|
||||
:returns: triplet (appid, version code, version name)
|
||||
"""
|
||||
r = re.compile("package: name='(?P<appid>.*)' versionCode='(?P<vercode>.*)' versionName='(?P<vername>.*)' platformBuildVersionName='.*'")
|
||||
r = re.compile("^package: name='(?P<appid>.*)' versionCode='(?P<vercode>.*)' versionName='(?P<vername>.*)'.*")
|
||||
p = SdkToolsPopen(['aapt', 'dump', 'badging', apkfile], output=False)
|
||||
for line in p.output.splitlines():
|
||||
m = r.match(line)
|
||||
|
|
|
@ -541,10 +541,40 @@ class CommonTest(unittest.TestCase):
|
|||
self._set_build_tools()
|
||||
config['aapt'] = fdroidserver.common.find_sdk_tools_cmd('aapt')
|
||||
|
||||
appid, vercode, vername = fdroidserver.common.get_apk_id_aapt('repo/obb.main.twoversions_1101613.apk')
|
||||
self.assertEqual('obb.main.twoversions', appid)
|
||||
self.assertEqual('1101613', vercode)
|
||||
self.assertEqual('0.1', vername)
|
||||
testcases = [
|
||||
('repo/obb.main.twoversions_1101613.apk', 'obb.main.twoversions', '1101613', '0.1'),
|
||||
('OBBMainPatchCurrent.apk', 'obb.mainpatch.current', '1619', '0.1'),
|
||||
('OBBMainTwoVersions.apk', 'obb.main.twoversions', '1101613', '0.1'),
|
||||
('org.bitbucket.tickytacky.mirrormirror_1.apk', 'org.bitbucket.tickytacky.mirrormirror', '1', '1.0'),
|
||||
('org.bitbucket.tickytacky.mirrormirror_2.apk', 'org.bitbucket.tickytacky.mirrormirror', '2', '1.0.1'),
|
||||
('org.bitbucket.tickytacky.mirrormirror_3.apk', 'org.bitbucket.tickytacky.mirrormirror', '3', '1.0.2'),
|
||||
('org.bitbucket.tickytacky.mirrormirror_4.apk', 'org.bitbucket.tickytacky.mirrormirror', '4', '1.0.3'),
|
||||
('org.dyndns.fules.ck_20.apk', 'org.dyndns.fules.ck', '20', 'v1.6pre2'),
|
||||
('urzip.apk', 'info.guardianproject.urzip', '100', '0.1'),
|
||||
('urzip-badcert.apk', 'info.guardianproject.urzip', '100', '0.1'),
|
||||
('urzip-badsig.apk', 'info.guardianproject.urzip', '100', '0.1'),
|
||||
('urzip-release.apk', 'info.guardianproject.urzip', '100', '0.1'),
|
||||
('urzip-release-unsigned.apk', 'info.guardianproject.urzip', '100', '0.1'),
|
||||
('urzip-πÇÇπÇÇ现代汉语通用字-български-عربي1234.apk', 'info.guardianproject.urzip', '100', '0.1'),
|
||||
('repo/com.politedroid_3.apk', 'com.politedroid', '3', '1.2'),
|
||||
('repo/com.politedroid_4.apk', 'com.politedroid', '4', '1.3'),
|
||||
('repo/com.politedroid_5.apk', 'com.politedroid', '5', '1.4'),
|
||||
('repo/com.politedroid_6.apk', 'com.politedroid', '6', '1.5'),
|
||||
('repo/duplicate.permisssions_9999999.apk', 'duplicate.permisssions', '9999999', '0.3-7-gb817ac8'),
|
||||
('repo/info.zwanenburg.caffeinetile_4.apk', 'info.zwanenburg.caffeinetile', '4', '1.3'),
|
||||
('repo/obb.main.oldversion_1444412523.apk', 'obb.main.oldversion', '1444412523', '0.1'),
|
||||
('repo/obb.mainpatch.current_1619_another-release-key.apk', 'obb.mainpatch.current', '1619', '0.1'),
|
||||
('repo/obb.mainpatch.current_1619.apk', 'obb.mainpatch.current', '1619', '0.1'),
|
||||
('repo/obb.main.twoversions_1101613.apk', 'obb.main.twoversions', '1101613', '0.1'),
|
||||
('repo/obb.main.twoversions_1101615.apk', 'obb.main.twoversions', '1101615', '0.1'),
|
||||
('repo/obb.main.twoversions_1101617.apk', 'obb.main.twoversions', '1101617', '0.1'),
|
||||
('repo/urzip-; Рахма́нинов, [rɐxˈmanʲɪnəf] سيرجي_رخمانينوف 谢尔盖·.apk', 'info.guardianproject.urzip', '100', '0.1'),
|
||||
]
|
||||
for apkfilename, appid, versionCode, versionName in testcases:
|
||||
a, vc, vn = fdroidserver.common.get_apk_id_aapt(apkfilename)
|
||||
self.assertEqual(appid, a)
|
||||
self.assertEqual(versionCode, vc)
|
||||
self.assertEqual(versionName, vn)
|
||||
|
||||
with self.assertRaises(FDroidException):
|
||||
fdroidserver.common.get_apk_id_aapt('nope')
|
||||
|
|
Loading…
Reference in New Issue