From 185da60d93638409b5572bb1b44fd747b03442a9 Mon Sep 17 00:00:00 2001 From: Jochen Sprickerhof Date: Sun, 30 May 2021 11:12:42 +0200 Subject: [PATCH] Support AutoUpdateMode: Version without pattern Since 24dd6740 UpdateCheckMode: Tags uses the found tag instead of regenerating it from the AutoUpdateMode pattern making the pattern superfluous. This adds support for dropping the pattern and a test case. --- fdroidserver/checkupdates.py | 2 +- fdroidserver/metadata.py | 2 +- tests/checkupdates.TestCase | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index aa8f6ff8..4d2e45ef 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -492,7 +492,7 @@ def checkupdates_app(app): logging.warning("Can't auto-update app with no CurrentVersionCode: " + app.id) elif mode in ('None', 'Static'): pass - elif mode.startswith('Version '): + elif mode.startswith('Version'): pattern = mode[8:] suffix = '' if pattern.startswith('+'): diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 1cc86f8e..f6524864 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -447,7 +447,7 @@ valuetypes = { ["AntiFeatures"]), FieldValidator("Auto Update Mode", - r"^(Version .+|None)$", + r"^(Version.*|None)$", ["AutoUpdateMode"]), FieldValidator("Update Check Mode", diff --git a/tests/checkupdates.TestCase b/tests/checkupdates.TestCase index 0fff202d..65b2907a 100755 --- a/tests/checkupdates.TestCase +++ b/tests/checkupdates.TestCase @@ -106,6 +106,38 @@ class CheckupdatesTest(unittest.TestCase): fdroidserver.checkupdates.checkupdates_app(app) wrmock.assert_called_with(app.metadatapath, app) + def test_checkupdates_app_tags(self): + fdroidserver.checkupdates.options = mock.Mock() + fdroidserver.checkupdates.options.auto = 'bleh' + fdroidserver.checkupdates.config = {} + + app = fdroidserver.metadata.App() + app.id = 'loop.starts.shooting' + app.metadatapath = 'metadata/' + app.id + '.yml' + app.CurrentVersion = '1.1.8' + app.CurrentVersionCode = 10108 + app.UpdateCheckMode = 'Tags' + app.AutoUpdateMode = 'Version' + + build = fdroidserver.metadata.Build() + build.versionCode = app.CurrentVersionCode + build.versionName = app.CurrentVersion + app['Builds'].append(build) + + with mock.patch('fdroidserver.checkupdates.check_tags', lambda app, + pattern: (None, 'bla', None)): + fdroidserver.checkupdates.checkupdates_app(app) + + with mock.patch('fdroidserver.checkupdates.check_tags', lambda app, + pattern: ('1.1.9', 10109, 'v1.1.9')): + with mock.patch('fdroidserver.metadata.write_metadata', + mock.Mock()): + with mock.patch('subprocess.call', lambda cmd: 0): + fdroidserver.checkupdates.checkupdates_app(app) + build = app['Builds'][-1] + self.assertEqual(build.versionName, '1.1.9') + self.assertEqual(build.commit, 'v1.1.9') + def test_check_http(self): fdroidserver.checkupdates.options = mock.Mock()