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`.
This commit is contained in:
Hans-Christoph Steiner 2024-01-23 14:39:57 +01:00
parent 7a656d45e3
commit fbf097d390
2 changed files with 13 additions and 18 deletions

View File

@ -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'):

View File

@ -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'