From b6e73345e2d4e9f8722d35cc94a1591576bfabcc Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 23 Jul 2025 16:31:18 +0200 Subject: [PATCH] deploy: convert to common.get_config() 717df09be020e3a3ac613a0f5e5625263c7f08b1 --- fdroidserver/deploy.py | 6 ++-- tests/test_deploy.py | 72 +++++++++++++++------------------------ tests/test_integration.py | 14 ++++---- 3 files changed, 38 insertions(+), 54 deletions(-) diff --git a/fdroidserver/deploy.py b/fdroidserver/deploy.py index f1dcce21..4651cd76 100644 --- a/fdroidserver/deploy.py +++ b/fdroidserver/deploy.py @@ -40,7 +40,6 @@ import fdroidserver.github from . import _, common, index from .exception import FDroidException -config = None start_timestamp = time.gmtime() GIT_BRANCH = 'master' @@ -144,6 +143,7 @@ def update_remote_storage_with_rclone( """ logging.debug(_('Using rclone to sync to "{name}"').format(name=awsbucket)) + config = common.get_config() rclone_config = config.get('rclone_config', []) if rclone_config and isinstance(rclone_config, str): rclone_config = [rclone_config] @@ -271,6 +271,7 @@ def update_serverwebroot(serverwebroot, repo_section): has a low resolution timestamp """ + config = common.get_config() try: subprocess.run(['rsync', '--version'], capture_output=True, check=True) except Exception as e: @@ -431,6 +432,7 @@ def update_servergitmirrors(servergitmirrors, repo_section): """ from clint.textui import progress + config = common.get_config() if config.get('local_copy_dir') and not config.get('sync_from_local_copy_dir'): logging.debug( _('Offline machine, skipping git mirror generation until `fdroid deploy`') @@ -1029,8 +1031,6 @@ def upload_to_github_releases_repo(repo_conf, release_infos, global_gh_token): def main(): - global config - parser = ArgumentParser() common.setup_global_opts(parser) parser.add_argument( diff --git a/tests/test_deploy.py b/tests/test_deploy.py index d7de7545..bbf69621 100755 --- a/tests/test_deploy.py +++ b/tests/test_deploy.py @@ -32,9 +32,10 @@ class DeployTest(unittest.TestCase): self.testdir = self._td.name fdroidserver.common.options = mock.Mock() - fdroidserver.deploy.config = {} + fdroidserver.common.get_config() def tearDown(self): + fdroidserver.common.config = None self._td.cleanup() def test_update_serverwebroots_bad_None(self): @@ -64,7 +65,6 @@ class DeployTest(unittest.TestCase): # setup parameters for this test run fdroidserver.common.options.identity_file = None - fdroidserver.deploy.config['make_current_version_link'] = False dest_apk0 = url0 / fake_apk dest_apk1 = url1 / fake_apk @@ -120,9 +120,9 @@ class DeployTest(unittest.TestCase): # setup parameters for this test run awsbucket = 'test_bucket_folder' - fdroidserver.deploy.config['awsbucket'] = awsbucket - fdroidserver.deploy.config['rclone_config'] = 'test-local-config' - fdroidserver.deploy.config['path_to_custom_rclone_config'] = str(rclone_file) + fdroidserver.common.config['awsbucket'] = awsbucket + fdroidserver.common.config['rclone_config'] = 'test-local-config' + fdroidserver.common.config['path_to_custom_rclone_config'] = str(rclone_file) fdroidserver.common.options = VerboseFalseOptions # write out destination path @@ -163,9 +163,9 @@ class DeployTest(unittest.TestCase): # setup parameters for this test run awsbucket = 'test_bucket_folder' - fdroidserver.deploy.config['awsbucket'] = awsbucket - fdroidserver.deploy.config['rclone_config'] = 'test-local-config' - fdroidserver.deploy.config['path_to_custom_rclone_config'] = str(rclone_file) + fdroidserver.common.config['awsbucket'] = awsbucket + fdroidserver.common.config['rclone_config'] = 'test-local-config' + fdroidserver.common.config['path_to_custom_rclone_config'] = str(rclone_file) fdroidserver.common.options = VerboseFalseOptions # write out destination path @@ -224,7 +224,7 @@ class DeployTest(unittest.TestCase): return 0 mock_call.side_effect = _mock_subprocess_call - fdroidserver.deploy.config = {'awsbucket': awsbucket} + fdroidserver.common.config = {'awsbucket': awsbucket} fdroidserver.deploy.update_remote_storage_with_rclone('repo', awsbucket) mock_call.assert_called() @@ -243,7 +243,7 @@ class DeployTest(unittest.TestCase): mock_call.side_effect = _mock_subprocess_call - fdroidserver.deploy.config = {'awsbucket': awsbucket} + fdroidserver.common.config = {'awsbucket': awsbucket} fdroidserver.deploy.update_remote_storage_with_rclone('repo', awsbucket) self.maxDiff = None self.assertEqual( @@ -262,7 +262,6 @@ class DeployTest(unittest.TestCase): @mock.patch('subprocess.check_output', _mock_rclone_config_file) @mock.patch('subprocess.call') def test_update_remote_storage_with_rclone_mock_rclone_config(self, mock_call): - awsbucket = 'test_bucket_folder' self.last_cmd = None def _mock_subprocess_call(cmd): @@ -271,10 +270,9 @@ class DeployTest(unittest.TestCase): mock_call.side_effect = _mock_subprocess_call - fdroidserver.deploy.config = { - 'awsbucket': awsbucket, - 'rclone_config': 'test_local_config', - } + awsbucket = 'test_bucket_folder' + fdroidserver.common.config['awsbucket'] = awsbucket + fdroidserver.common.config['rclone_config'] = 'test_local_config' fdroidserver.deploy.update_remote_storage_with_rclone('repo', awsbucket) self.maxDiff = None self.assertEqual( @@ -304,8 +302,8 @@ class DeployTest(unittest.TestCase): Path('rclone.conf').write_text('placeholder, contents ignored') awsbucket = 'test_bucket_folder' - fdroidserver.deploy.config['awsbucket'] = awsbucket - fdroidserver.deploy.config['rclone_config'] = config_name + fdroidserver.common.config['awsbucket'] = awsbucket + fdroidserver.common.config['rclone_config'] = config_name fdroidserver.deploy.update_remote_storage_with_rclone('repo', awsbucket) self.maxDiff = None self.assertEqual( @@ -339,7 +337,6 @@ class DeployTest(unittest.TestCase): fdroidserver.common.options = mock.Mock() fdroidserver.common.options.identity_file = None fdroidserver.common.options.identity_file = None - fdroidserver.deploy.config['make_current_version_link'] = False dest_apk = Path(url) / fake_apk dest_index = Path(url) / fake_index @@ -366,7 +363,6 @@ class DeployTest(unittest.TestCase): # setup parameters for this test run fdroidserver.common.options = mock.Mock() fdroidserver.common.options.identity_file = None - fdroidserver.deploy.config['make_current_version_link'] = False dest_apk = Path(url) / fake_apk dest_index = Path(url) / fake_index @@ -396,7 +392,7 @@ class DeployTest(unittest.TestCase): fdroidserver.common.options.verbose = False fdroidserver.common.options.quiet = True fdroidserver.common.options.index_only = False - fdroidserver.deploy.config = {'make_current_version_link': True} + fdroidserver.common.config['make_current_version_link'] = True url = "example.com:/var/www/fdroid" repo_section = 'repo' @@ -504,7 +500,7 @@ class DeployTest(unittest.TestCase): fdroidserver.common.options.verbose = False fdroidserver.common.options.quiet = True fdroidserver.common.options.identity_file = None - fdroidserver.deploy.config['make_current_version_link'] = True + fdroidserver.common.config['make_current_version_link'] = True url = "example.com:/var/www/fdroid" repo_section = 'repo' @@ -603,7 +599,7 @@ class DeployTest(unittest.TestCase): fdroidserver.common.options.quiet = False fdroidserver.common.options.identity_file = None fdroidserver.common.options.index_only = False - fdroidserver.deploy.config = {'identity_file': './id_rsa'} + fdroidserver.common.config = {'identity_file': './id_rsa'} url = "example.com:/var/www/fdroid" repo_section = 'archive' @@ -623,7 +619,7 @@ class DeployTest(unittest.TestCase): '--verbose', '-e', 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' - + fdroidserver.deploy.config['identity_file'], + + fdroidserver.common.config['identity_file'], '--exclude', 'archive/altstore-index.json', '--exclude', @@ -669,7 +665,7 @@ class DeployTest(unittest.TestCase): '--verbose', '-e', 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' - + fdroidserver.deploy.config['identity_file'], + + fdroidserver.common.config['identity_file'], 'archive', url, ], @@ -690,8 +686,7 @@ class DeployTest(unittest.TestCase): fdroidserver.common.options.verbose = True fdroidserver.common.options.quiet = False fdroidserver.common.options.identity_file = None - fdroidserver.deploy.config['identity_file'] = './id_rsa' - fdroidserver.deploy.config['make_current_version_link'] = False + fdroidserver.common.config['identity_file'] = './id_rsa' url = "example.com:/var/www/fdroid" repo_section = 'archive' @@ -711,7 +706,7 @@ class DeployTest(unittest.TestCase): '--verbose', '-e', 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' - + fdroidserver.deploy.config['identity_file'], + + fdroidserver.common.config['identity_file'], 'archive/altstore-index.json', 'archive/altstore-index.json.asc', 'archive/entry.jar', @@ -741,7 +736,7 @@ class DeployTest(unittest.TestCase): '--verbose', '-e', 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' - + fdroidserver.deploy.config['identity_file'], + + fdroidserver.common.config['identity_file'], "example.com:/var/www/fdroid/archive/", ], ) @@ -793,10 +788,6 @@ class DeployTest(unittest.TestCase): fdroidserver.common.options.verbose = False fdroidserver.common.options.quiet = True - config = {} - fdroidserver.common.fill_config_defaults(config) - fdroidserver.deploy.config = config - os.chdir(self.testdir) repo_section = 'repo' @@ -807,7 +798,8 @@ class DeployTest(unittest.TestCase): remote_git_repo = git.Repo.init( remote_repo, initial_branch=initial_branch, bare=True ) - fdroidserver.deploy.config["servergitmirrors"] = [{"url": str(remote_repo)}] + fdroidserver.common.get_config() + fdroidserver.common.config["servergitmirrors"] = [{"url": str(remote_repo)}] os.chdir(self.testdir) repo = Path('repo') @@ -820,7 +812,7 @@ class DeployTest(unittest.TestCase): fp.write('not a real one, but has the right filename') fdroidserver.deploy.update_servergitmirrors( - fdroidserver.deploy.config["servergitmirrors"], repo_section + fdroidserver.common.config["servergitmirrors"], repo_section ) verify_repo = remote_git_repo.clone( @@ -844,10 +836,6 @@ class DeployTest(unittest.TestCase): fdroidserver.common.options.verbose = False fdroidserver.common.options.quiet = True - config = {} - fdroidserver.common.fill_config_defaults(config) - fdroidserver.deploy.config = config - os.chdir(self.testdir) repo_section = 'repo' @@ -858,7 +846,7 @@ class DeployTest(unittest.TestCase): remote_git_repo = git.Repo.init( remote_repo, initial_branch=initial_branch, bare=True ) - fdroidserver.deploy.config["servergitmirrors"] = [ + fdroidserver.common.config["servergitmirrors"] = [ {"url": str(remote_repo), "index_only": True} ] @@ -873,7 +861,7 @@ class DeployTest(unittest.TestCase): fp.write('not a real one, but has the right filename') fdroidserver.deploy.update_servergitmirrors( - fdroidserver.deploy.config["servergitmirrors"], repo_section + fdroidserver.common.config["servergitmirrors"], repo_section ) verify_repo = remote_git_repo.clone( @@ -905,10 +893,6 @@ class DeployTest(unittest.TestCase): fdroidserver.common.options.quiet = True fdroidserver.common.options.identity_file = None - config = {} - fdroidserver.common.fill_config_defaults(config) - fdroidserver.deploy.config = config - repo_section = 'repo' initial_branch = fdroidserver.deploy.GIT_BRANCH diff --git a/tests/test_integration.py b/tests/test_integration.py index 2cdf19d9..d051275b 100755 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -75,7 +75,6 @@ class IntegrationTest(unittest.TestCase): self.testdir = mkdir_testfiles(WORKSPACE, self) self.tmp_repo_root = self.testdir / "fdroid" self.tmp_repo_root.mkdir(parents=True) - deploy.config = {} os.chdir(self.tmp_repo_root) def tearDown(self): @@ -1611,10 +1610,11 @@ class IntegrationTest(unittest.TestCase): rclone_config.write(configfile) # set up config for run + common.get_config() awsbucket = "test-bucket" - deploy.config['awsbucket'] = awsbucket - deploy.config['rclone_config'] = "test-minio-config" - deploy.config['path_to_custom_rclone_config'] = str(rclone_file) + common.config['awsbucket'] = awsbucket + common.config['rclone_config'] = "test-minio-config" + common.config['path_to_custom_rclone_config'] = str(rclone_file) common.options = VerboseFalseOptions # call function @@ -1667,9 +1667,9 @@ class IntegrationTest(unittest.TestCase): # set up config for run awsbucket = "test-bucket" - deploy.config['awsbucket'] = awsbucket - deploy.config['rclone_config'] = "test-minio-config" - deploy.config['path_to_custom_rclone_config'] = str(rclone_file) + common.config['awsbucket'] = awsbucket + common.config['rclone_config'] = "test-minio-config" + common.config['path_to_custom_rclone_config'] = str(rclone_file) common.options = VerboseFalseOptions # call function