From fbf097d39083928e74ab043b1d8c00db079ad0d3 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 23 Jan 2024 14:39:57 +0100 Subject: [PATCH] deploy: update_serverwebroot() works w/o options/config Since update_serverwebroot() is part of the public API, this function should work without setting `fdroidserver.deploy.options` or `fdroidserver.deploy.config`. --- fdroidserver/deploy.py | 12 ++++++------ tests/deploy.TestCase | 19 +++++++------------ 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/fdroidserver/deploy.py b/fdroidserver/deploy.py index aef9205b..1cea0227 100644 --- a/fdroidserver/deploy.py +++ b/fdroidserver/deploy.py @@ -284,15 +284,15 @@ def update_serverwebroot(serverwebroot, repo_section): _('rsync is missing or broken: {error}').format(error=e) ) from e rsyncargs = ['rsync', '--archive', '--delete-after', '--safe-links'] - if not options.no_checksum: + if not options or not options.no_checksum: rsyncargs.append('--checksum') - if options.verbose: + if options and options.verbose: rsyncargs += ['--verbose'] - if options.quiet: + if options and options.quiet: rsyncargs += ['--quiet'] - if options.identity_file is not None: + if options and options.identity_file: rsyncargs += ['-e', 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' + options.identity_file] - elif 'identity_file' in config: + elif config and config.get('identity_file'): rsyncargs += ['-e', 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' + config['identity_file']] url = serverwebroot['url'] logging.info('rsyncing ' + repo_section + ' to ' + url) @@ -302,7 +302,7 @@ def update_serverwebroot(serverwebroot, repo_section): if subprocess.call(rsyncargs + [repo_section, url]) != 0: raise FDroidException() # upload "current version" symlinks if requested - if config['make_current_version_link'] and repo_section == 'repo': + if config and config.get('make_current_version_link') and repo_section == 'repo': links_to_upload = [] for f in glob.glob('*.apk') \ + glob.glob('*.apk.asc') + glob.glob('*.apk.sig'): diff --git a/tests/deploy.TestCase b/tests/deploy.TestCase index b1f1f103..7e6a9857 100755 --- a/tests/deploy.TestCase +++ b/tests/deploy.TestCase @@ -32,13 +32,11 @@ class DeployTest(unittest.TestCase): self._td = mkdtemp() self.testdir = self._td.name - fdroidserver.deploy.options = mock.Mock() - fdroidserver.deploy.config = {} - def tearDown(self): self._td.cleanup() def test_update_serverwebroot(self): + """rsync works with file paths, so this test uses paths for the URLs""" os.chdir(self.testdir) repo = Path('repo') repo.mkdir(parents=True) @@ -48,10 +46,6 @@ class DeployTest(unittest.TestCase): url = Path('url') url.mkdir() - # setup parameters for this test run - fdroidserver.deploy.options.identity_file = None - fdroidserver.deploy.config['make_current_version_link'] = False - dest_apk = url / fake_apk self.assertFalse(dest_apk.is_file()) fdroidserver.deploy.update_serverwebroot({'url': str(url)}, 'repo') @@ -66,12 +60,12 @@ class DeployTest(unittest.TestCase): def test_update_serverwebroot_make_cur_version_link(self): # setup parameters for this test run + fdroidserver.deploy.options = mock.Mock() fdroidserver.deploy.options.no_checksum = True fdroidserver.deploy.options.identity_file = None fdroidserver.deploy.options.verbose = False fdroidserver.deploy.options.quiet = True - fdroidserver.deploy.options.identity_file = None - fdroidserver.deploy.config['make_current_version_link'] = True + fdroidserver.deploy.config = {'make_current_version_link': True} url = "example.com:/var/www/fdroid" repo_section = 'repo' @@ -157,12 +151,13 @@ class DeployTest(unittest.TestCase): def test_update_serverwebroot_with_id_file(self): # setup parameters for this test run - fdroidserver.deploy.options.no_chcksum = False + fdroidserver.deploy.options = mock.Mock() + fdroidserver.deploy.options.identity_file = None + fdroidserver.deploy.options.no_checksum = True fdroidserver.deploy.options.verbose = True fdroidserver.deploy.options.quiet = False fdroidserver.deploy.options.identity_file = None - fdroidserver.deploy.config['identity_file'] = './id_rsa' - fdroidserver.deploy.config['make_current_version_link'] = False + fdroidserver.deploy.config = {'identity_file': './id_rsa'} url = "example.com:/var/www/fdroid" repo_section = 'archive'