mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-09-13 14:32:28 +03:00
verify: handle corrupt verified.json
verified.json can get quite large on verification.f-droid.org, and for some unknown reason, it sometimes corrupts it when writing it out. All the data is already available in all the other JSON files, so this just automatically reconstructs it. Its a hack, but it took me much less time than I've already spent trying to troubleshoot why it writes out corrupt verified.json.
This commit is contained in:
parent
4c88b19bae
commit
5b1b1d12a1
3 changed files with 111 additions and 6 deletions
|
@ -44,10 +44,53 @@ class VerifyTest(unittest.TestCase):
|
|||
os.chdir(self.tempdir.name)
|
||||
self.repodir = Path('repo')
|
||||
self.repodir.mkdir()
|
||||
self.apk_reports_json = basedir / 'org.fdroid.fdroid_1019051.apk.json'
|
||||
|
||||
def tearDown(self):
|
||||
self.tempdir.cleanup()
|
||||
|
||||
def test_get_verified_json_creation(self):
|
||||
self.assertEqual({'packages': {}}, verify.get_verified_json('does-not-exist'))
|
||||
|
||||
def test_get_verified_json_existing(self):
|
||||
f = 'verified.json'
|
||||
reports = {'packages': {'placeholder': {}}}
|
||||
with open(f, 'w') as fp:
|
||||
json.dump(reports, fp)
|
||||
self.assertEqual(reports, verify.get_verified_json(f))
|
||||
|
||||
def test_get_verified_json_pull_in_one_report(self):
|
||||
shutil.copy(self.apk_reports_json, self.tempdir.name)
|
||||
with open(self.apk_reports_json) as fp:
|
||||
reports = json.load(fp)
|
||||
self.assertEqual(
|
||||
{'packages': {'org.fdroid.fdroid': [reports['1708238023.6572325']]}},
|
||||
verify.get_verified_json('does-not-exist'),
|
||||
)
|
||||
|
||||
def test_get_verified_json_ignore_corrupt(self):
|
||||
f = 'verified.json'
|
||||
with open(f, 'w') as fp:
|
||||
fp.write("""{"packages": {"placeholder": {""")
|
||||
shutil.copy(self.apk_reports_json, self.tempdir.name)
|
||||
with open(self.apk_reports_json) as fp:
|
||||
reports = json.load(fp)
|
||||
self.assertEqual(
|
||||
{'packages': {'org.fdroid.fdroid': [reports['1708238023.6572325']]}},
|
||||
verify.get_verified_json(f),
|
||||
)
|
||||
|
||||
def test_get_verified_json_ignore_apk_reports(self):
|
||||
"""When an intact verified.json exists, it should ignore the .apk.json reports."""
|
||||
f = 'verified.json'
|
||||
placeholder = {'packages': {'placeholder': {}}}
|
||||
with open(f, 'w') as fp:
|
||||
json.dump(placeholder, fp)
|
||||
shutil.copy(self.apk_reports_json, self.tempdir.name)
|
||||
with open(self.apk_reports_json) as fp:
|
||||
json.load(fp)
|
||||
self.assertEqual(placeholder, verify.get_verified_json(f))
|
||||
|
||||
@patch('fdroidserver.common.sha256sum')
|
||||
def test_write_json_report(self, sha256sum):
|
||||
sha256sum.return_value = (
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue