1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-07-04 16:30:12 +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:
return get_apk_id_androguard(apkfile)
except zipfile.BadZipFile as e:
logging.error(apkfile + ': ' + str(e))
if 'aapt' in config:
if config and 'aapt' in config:
logging.error(apkfile + ': ' + str(e))
return get_apk_id_aapt(apkfile)
else:
raise e
def get_apk_id_androguard(apkfile):

View File

@ -21,7 +21,7 @@ import textwrap
import yaml
import gzip
import stat
from zipfile import ZipFile, ZipInfo
from zipfile import BadZipFile, ZipFile, ZipInfo
from unittest import mock
from pathlib import Path
@ -959,9 +959,24 @@ class CommonTest(unittest.TestCase):
self.assertEqual(versionCode, vc, 'aapt versionCode 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):
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):
files = glob.glob(os.path.join(self.basedir, 'build-tools', '[1-9]*.*', '*.txt'))
self.assertNotEqual(0, len(files))