deploy: give useful error if rsync is not installed

This commit is contained in:
Hans-Christoph Steiner committed 2023-09-08 10:42:27 +02:00
1 parent ed50de055a
commit 00aa595f37
2 files changed
+14

No files matched your search

+6
View File
@@ -277,6 +277,12 @@ def update_serverwebroot(serverwebroot, repo_section):
has a low resolution timestamp
"""
try:
subprocess.run(['rsync', '--version'], capture_output=True, check=True)
except Exception as e:
raise FDroidException(
_('rsync is missing or broken: {error}').format(error=e)
) from e
rsyncargs = ['rsync', '--archive', '--delete-after', '--safe-links']
if not options.no_checksum:
rsyncargs.append('--checksum')
+8
View File
@@ -18,6 +18,7 @@ if localmodule not in sys.path:
import fdroidserver.common
import fdroidserver.deploy
from fdroidserver.exception import FDroidException
from testcommon import TmpCwd, mkdtemp
@@ -56,6 +57,13 @@ class DeployTest(unittest.TestCase):
fdroidserver.deploy.update_serverwebroot(str(serverwebroot), 'repo')
self.assertTrue(dest_apk.is_file())
@mock.patch.dict(os.environ, clear=True)
def test_update_serverwebroot_no_rsync_error(self):
os.environ['PATH'] = self.testdir
os.chdir(self.testdir)
with self.assertRaises(FDroidException):
fdroidserver.deploy.update_serverwebroot('serverwebroot', 'repo')
def test_update_serverwebroot_make_cur_version_link(self):
# setup parameters for this test run
fdroidserver.deploy.options.no_checksum = True