chiark / gitweb /
Fix bug when scanning invalid APKs and add a test for it
authorTorsten Grote <t@grobox.de>
Mon, 3 Apr 2017 16:07:49 +0000 (13:07 -0300)
committerTorsten Grote <t@grobox.de>
Mon, 3 Apr 2017 16:07:49 +0000 (13:07 -0300)
fdroidserver/update.py
tests/update.TestCase

index ee8accc20fb81e2bbdd3421c693b06859f58c6cf..6694e0353d8433963c50d75efecdb808865b173d 100644 (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:
index 63b1b09632796f5cb6d08def1147ec4d8d0d80b4..df85b27715e7de92b609c27f027dce9dddb4df95 100755 (executable)
@@ -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()