update: improve logging when exiting due to bad APK file

closes #851
This commit is contained in:
Hans-Christoph Steiner 2020-12-08 09:19:25 +01:00
parent ba854cbc0f
commit d9171f11e0
2 changed files with 17 additions and 2 deletions

View File

@ -1448,8 +1448,9 @@ def scan_apk_androguard(apk, apkfile):
logging.error(_("Failed to get apk information, skipping {path}")
.format(path=apkfile))
raise BuildException(_("Invalid APK"))
except FileNotFoundError:
logging.error(_("Could not open apk file for analysis"))
except (FileNotFoundError, zipfile.BadZipFile) as e:
logging.error(_("Could not open APK {path} for analysis: ").format(path=apkfile)
+ str(e))
raise BuildException(_("Invalid APK"))
apk['packageName'] = apkobject.get_package()

View File

@ -625,6 +625,20 @@ class UpdateTest(unittest.TestCase):
with self.assertRaises(fdroidserver.exception.BuildException):
fdroidserver.update.scan_apk('urzip-release-unsigned.apk')
def test_scan_apk_bad_zip(self):
config = dict()
fdroidserver.common.fill_config_defaults(config)
fdroidserver.common.config = config
fdroidserver.update.config = config
testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir)
os.chdir(testdir)
os.mkdir('repo')
apkfile = 'repo/badzip_1.apk'
with open(apkfile, 'w') as fp:
fp.write('this is not a zip file')
with self.assertRaises(fdroidserver.exception.BuildException):
fdroidserver.update.scan_apk(apkfile)
def test_process_apk(self):
def _build_yaml_representer(dumper, data):