diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index 5f1035a0..566dde00 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -511,12 +511,16 @@ def checkupdates_app(app): logging.warning(logmsg) elif vercode == app.CurrentVersionCode: logging.info("...up to date") - else: + elif int(vercode) > int(app.CurrentVersionCode): logging.debug("...updating - old vercode={0}, new vercode={1}".format( app.CurrentVersionCode, vercode)) app.CurrentVersion = version app.CurrentVersionCode = str(int(vercode)) updating = True + else: + logging.info("Refusing to auto update, since the current version is newer") + logging.debug("...old vercode={0}, new vercode={1}".format( + app.CurrentVersionCode, vercode)) commitmsg = fetch_autoname(app, tag) diff --git a/tests/checkupdates.TestCase b/tests/checkupdates.TestCase index a44ea0a4..3610b930 100755 --- a/tests/checkupdates.TestCase +++ b/tests/checkupdates.TestCase @@ -60,6 +60,16 @@ class CheckupdatesTest(unittest.TestCase): self.assertEqual(build.versionName, '1.1.9') self.assertEqual(build.commit, '1.1.9') + with mock.patch( + 'fdroidserver.checkupdates.check_http', lambda app: ('1.7.9', 10107) + ): + 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, '1.1.9') + def test_autoupdatemode_suffix(self): fdroidserver.checkupdates.options = mock.Mock() fdroidserver.checkupdates.options.auto = 'bleh'