1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-10-03 17:50:11 +02:00

Merge branch 'get_apk_id_api_call' into 'master'

allow common.get_apk_id() to be used in the API

See merge request fdroid/fdroidserver!1118
This commit is contained in:
Jochen Sprickerhof 2022-05-31 09:43:51 +00:00
commit 2d0645c1c4
2 changed files with 20 additions and 3 deletions

View File

@ -2689,9 +2689,11 @@ def get_apk_id(apkfile):
try: try:
return get_apk_id_androguard(apkfile) return get_apk_id_androguard(apkfile)
except zipfile.BadZipFile as e: except zipfile.BadZipFile as e:
logging.error(apkfile + ': ' + str(e)) if config and 'aapt' in config:
if 'aapt' in config: logging.error(apkfile + ': ' + str(e))
return get_apk_id_aapt(apkfile) return get_apk_id_aapt(apkfile)
else:
raise e
def get_apk_id_androguard(apkfile): def get_apk_id_androguard(apkfile):

View File

@ -21,7 +21,7 @@ import textwrap
import yaml import yaml
import gzip import gzip
import stat import stat
from zipfile import ZipFile, ZipInfo from zipfile import BadZipFile, ZipFile, ZipInfo
from unittest import mock from unittest import mock
from pathlib import Path from pathlib import Path
@ -959,9 +959,24 @@ class CommonTest(unittest.TestCase):
self.assertEqual(versionCode, vc, 'aapt versionCode parsing failed for ' + apkfilename) self.assertEqual(versionCode, vc, 'aapt versionCode parsing failed for ' + apkfilename)
self.assertEqual(versionName, vn, 'aapt versionName parsing failed for ' + apkfilename) self.assertEqual(versionName, vn, 'aapt versionName parsing failed for ' + apkfilename)
def test_get_apk_id_bad_path(self):
with self.assertRaises(FDroidException): with self.assertRaises(FDroidException):
fdroidserver.common.get_apk_id('nope') fdroidserver.common.get_apk_id('nope')
def test_get_apk_id_api_call(self):
self.assertEqual(
('info.guardianproject.urzip', '100', '0.1'),
fdroidserver.common.get_apk_id('urzip.apk'),
)
def test_get_apk_id_bad_zip(self):
os.chdir(self.tmpdir)
badzip = 'badzip.apk'
with open(badzip, 'w') as fp:
fp.write('not a ZIP')
with self.assertRaises(BadZipFile):
fdroidserver.common.get_apk_id(badzip)
def test_get_apk_id_aapt_regex(self): def test_get_apk_id_aapt_regex(self):
files = glob.glob(os.path.join(self.basedir, 'build-tools', '[1-9]*.*', '*.txt')) files = glob.glob(os.path.join(self.basedir, 'build-tools', '[1-9]*.*', '*.txt'))
self.assertNotEqual(0, len(files)) self.assertNotEqual(0, len(files))