Fix bug when scanning invalid APKs and add a test for it

This commit is contained in:
Torsten Grote 2017-04-03 13:07:49 -03:00
parent 159ca824b7
commit 8f6fa2955d
No known key found for this signature in database
GPG Key ID: 3E5F77D92CF891FF
2 changed files with 20 additions and 1 deletions

View File

@ -819,7 +819,7 @@ def scan_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk):
logging.error("Could not find {0} to remove it".format(apkfile))
else:
logging.error("Failed to get apk information, skipping " + apkfile)
return True
return True, None, False
for line in p.output.splitlines():
if line.startswith("package:"):
try:

View File

@ -130,6 +130,25 @@ class UpdateTest(unittest.TestCase):
self.assertIsNone(apk.get('obbMainFile'))
self.assertIsNone(apk.get('obbPatchFile'))
def test_scan_invalid_apk(self):
os.chdir(os.path.dirname(__file__))
if os.path.basename(os.getcwd()) != 'tests':
raise Exception('This test must be run in the "tests/" subdir')
config = dict()
fdroidserver.common.fill_config_defaults(config)
fdroidserver.common.config = config
fdroidserver.update.config = config
fdroidserver.update.options.delete_unknown = False
knownapks = fdroidserver.common.KnownApks()
apk = 'fake.ota.update_1234.zip' # this is not an APK, scanning should fail
(skip, apk, cachechanged) = fdroidserver.update.scan_apk({}, apk, 'repo', knownapks, False)
self.assertTrue(skip)
self.assertIsNone(apk)
self.assertFalse(cachechanged)
if __name__ == "__main__":
parser = optparse.OptionParser()