mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-10 17:30:11 +01:00
18f3acc32e
There is no longer any reason for these to be intertwined. This deliberately avoids touching some files as much as possible because they are super tangled and due to be replaced. Those files are: * fdroidserver/build.py * fdroidserver/update.py # Conflicts: # tests/testcommon.py # Conflicts: # fdroidserver/btlog.py # fdroidserver/import_subcommand.py
76 lines
2.6 KiB
Python
Executable File
76 lines
2.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import inspect
|
|
import os
|
|
import sys
|
|
import unittest
|
|
import hashlib
|
|
import logging
|
|
from tempfile import TemporaryDirectory
|
|
|
|
localmodule = os.path.realpath(
|
|
os.path.join(os.path.dirname(inspect.getfile(inspect.currentframe())), '..')
|
|
)
|
|
print('localmodule: ' + localmodule)
|
|
if localmodule not in sys.path:
|
|
sys.path.insert(0, localmodule)
|
|
|
|
from testcommon import TmpCwd
|
|
from fdroidserver import common, signatures
|
|
|
|
|
|
class SignaturesTest(unittest.TestCase):
|
|
def setUp(self):
|
|
logging.basicConfig(level=logging.DEBUG)
|
|
common.config = None
|
|
config = common.read_config()
|
|
config['jarsigner'] = common.find_sdk_tools_cmd('jarsigner')
|
|
config['verbose'] = True
|
|
common.config = config
|
|
|
|
def test_main(self):
|
|
|
|
# option fixture class:
|
|
class OptionsFixture:
|
|
APK = [os.path.abspath(os.path.join('repo', 'com.politedroid_3.apk'))]
|
|
|
|
with TemporaryDirectory() as tmpdir, TmpCwd(tmpdir):
|
|
signatures.extract(OptionsFixture())
|
|
|
|
# check if extracted signatures are where they are supposed to be
|
|
# also verify weather if extracted file contian what they should
|
|
filesAndHashes = (
|
|
(os.path.join('metadata', 'com.politedroid', 'signatures', '3', 'MANIFEST.MF'),
|
|
'7dcd83f0c41a75457fd2311bf3c4578f80d684362d74ba8dc52838d353f31cf2'),
|
|
(os.path.join('metadata', 'com.politedroid', 'signatures', '3', 'RELEASE.RSA'),
|
|
'883ef3d5a6e0bf69d2a58d9e255a7930f08a49abc38e216ed054943c99c8fdb4'),
|
|
(os.path.join('metadata', 'com.politedroid', 'signatures', '3', 'RELEASE.SF'),
|
|
'99fbb3211ef5d7c1253f3a7ad4836eadc9905103ce6a75916c40de2831958284'),
|
|
)
|
|
for path, checksum in filesAndHashes:
|
|
self.assertTrue(os.path.isfile(path),
|
|
msg="check whether '{path}' was extracted "
|
|
"correctly.".format(path=path))
|
|
with open(path, 'rb') as f:
|
|
self.assertEqual(hashlib.sha256(f.read()).hexdigest(), checksum)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
os.chdir(os.path.dirname(__file__))
|
|
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"-v",
|
|
"--verbose",
|
|
action="store_true",
|
|
default=False,
|
|
help="Spew out even more information than normal",
|
|
)
|
|
common.options = common.parse_args(parser)
|
|
|
|
newSuite = unittest.TestSuite()
|
|
newSuite.addTest(unittest.makeSuite(SignaturesTest))
|
|
unittest.main(failfast=False)
|