From a9a336a12bb56a9b9b55af5bb6440607d410f4ef Mon Sep 17 00:00:00 2001 From: Jochen Sprickerhof Date: Wed, 9 Jun 2021 10:34:21 +0200 Subject: [PATCH] Don't allow '_' in first place of version code Fixes a regression of 2cb0ff45. Example: versionCode project.versionCode_plus https://github.com/anthonycr/Lightning-Browser/blob/931b0a3087f320d2ce0cc2c8b5007a0b80ac387a/app/build.gradle#L38 --- fdroidserver/common.py | 2 +- tests/common.TestCase | 13 +++++++++++++ .../com.kunzisoft.testcase/build.gradle | 9 +++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index a832a7de..661775a0 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -1579,7 +1579,7 @@ def remove_debuggable_flags(root_dir): os.path.join(root, 'AndroidManifest.xml')) -vcsearch_g = re.compile(r'''\b[Vv]ersionCode\s*=?\s*["'(]*([0-9_]+)["')]*''').search +vcsearch_g = re.compile(r'''\b[Vv]ersionCode\s*=?\s*["'(]*([0-9][0-9_]*)["')]*''').search vnsearch_g = re.compile(r'''\b[Vv]ersionName\s*=?\s*\(?(["'])((?:(?=(\\?))\3.)*?)\1''').search vnssearch_g = re.compile(r'''\b[Vv]ersionNameSuffix\s*=?\s*(["'])((?:(?=(\\?))\3.)*?)\1''').search psearch_g = re.compile(r'''\b(packageName|applicationId)\s*=*\s*["']([^"']+)["']''').search diff --git a/tests/common.TestCase b/tests/common.TestCase index 2da0ecfa..1f79483e 100755 --- a/tests/common.TestCase +++ b/tests/common.TestCase @@ -1222,6 +1222,19 @@ class CommonTest(unittest.TestCase): self.assertEqual(('20180430-underscore', '2018_04_30', 'com.kunzisoft.fdroidtest.applicationidsuffix.underscore'), fdroidserver.common.parse_androidmanifests(paths, app)) + app = fdroidserver.metadata.App() + build = fdroidserver.metadata.Build() + build.gradle = ['underscore_first'] + app['Builds'] = [build] + app.id = 'com.kunzisoft.fdroidtest.applicationidsuffix.underscore_first' + paths = [ + os.path.join('source-files', 'com.kunzisoft.testcase', 'build.gradle'), + ] + for path in paths: + self.assertTrue(os.path.isfile(path)) + self.assertEqual(('1.0', '1', 'com.kunzisoft.fdroidtest.applicationidsuffix.underscore_first'), + fdroidserver.common.parse_androidmanifests(paths, app)) + def test_get_all_gradle_and_manifests(self): """Test whether the function works with relative and absolute paths""" a = fdroidserver.common.get_all_gradle_and_manifests(Path('source-files/cn.wildfirechat.chat')) diff --git a/tests/source-files/com.kunzisoft.testcase/build.gradle b/tests/source-files/com.kunzisoft.testcase/build.gradle index 2753d058..13cc4bc2 100644 --- a/tests/source-files/com.kunzisoft.testcase/build.gradle +++ b/tests/source-files/com.kunzisoft.testcase/build.gradle @@ -59,6 +59,15 @@ android { // Version code : 2018_04_30 // Version name : 20180430-underscore } + underscore_first { + applicationIdSuffix = ".underscore_first" + versionCode _04_30 + buildConfigField "boolean", "FULL_VERSION", "true" + buildConfigField "boolean", "CLOSED_STORE", "true" + // ApplicationId : com.kunzisoft.fdroidtest.applicationidsuffix.underscore_first + // Version code : 1 + // Version name : 1.0 + } } }