From 6ce22bff566d57c0f9f8b127b1f2f60477e08a3b Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Mon, 13 Jan 2020 18:54:28 +0100 Subject: [PATCH] update: strip newlines from name/summary/video entries These entries are hardcoded as a single line in all the app stores, so newlines should be stripped to get the data simple to use. This is in contrast with the on-disk format for Fastlane and Triple-T, which includes a newline in the title.txt and short_description.txt files. I think all files in those systems are normalized to end in a newline. --- fdroidserver/update.py | 5 ++++- tests/repo/index-v1.json | 6 +++--- tests/update.TestCase | 8 ++++---- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/fdroidserver/update.py b/fdroidserver/update.py index bc2583fc..44d4b8c0 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -714,7 +714,10 @@ def _set_localized_text_entry(app, locale, key, f): with open(f, errors='replace') as fp: text = fp.read()[:limit] if len(text) > 0: - localized[key] = text + if key in ('name', 'summary', 'video'): # hardcoded as a single line + localized[key] = text.strip('\n') + else: + localized[key] = text def _set_author_entry(app, key, f): diff --git a/tests/repo/index-v1.json b/tests/repo/index-v1.json index 492b6051..32d76b7d 100644 --- a/tests/repo/index-v1.json +++ b/tests/repo/index-v1.json @@ -198,9 +198,9 @@ "description": "full description\n", "featureGraphic": "featureGraphic_GFRT5BovZsENGpJq1HqPODGWBRPWQsx25B95Ol5w_wU=.png", "icon": "icon_NJXNzMcyf-v9i5a1ElJi0j9X1LvllibCa48xXYPlOqQ=.png", - "name": "title\n", - "summary": "short description\n", - "video": "video\n" + "name": "title", + "summary": "short description", + "video": "video" } } } diff --git a/tests/update.TestCase b/tests/update.TestCase index 61658292..e3d9ef53 100755 --- a/tests/update.TestCase +++ b/tests/update.TestCase @@ -114,9 +114,9 @@ class UpdateTest(unittest.TestCase): if packageName == 'info.guardianproject.urzip': self.assertEqual(7, len(app['localized']['en-US'])) self.assertEqual('full description\n', app['localized']['en-US']['description']) - self.assertEqual('title\n', app['localized']['en-US']['name']) - self.assertEqual('short description\n', app['localized']['en-US']['summary']) - self.assertEqual('video\n', app['localized']['en-US']['video']) + self.assertEqual('title', app['localized']['en-US']['name']) + self.assertEqual('short description', app['localized']['en-US']['summary']) + self.assertEqual('video', app['localized']['en-US']['video']) self.assertEqual('icon_NJXNzMcyf-v9i5a1ElJi0j9X1LvllibCa48xXYPlOqQ=.png', app['localized']['en-US']['icon']) self.assertEqual('featureGraphic_GFRT5BovZsENGpJq1HqPODGWBRPWQsx25B95Ol5w_wU=.png', @@ -140,7 +140,7 @@ class UpdateTest(unittest.TestCase): elif packageName == 'com.nextcloud.client.dev': self.assertEqual('Nextcloud Dev', app['localized']['en-US']['name']) self.assertEqual(586, len(app['localized']['en-US']['description'])) - self.assertEqual(79, len(app['localized']['en-US']['summary'])) + self.assertEqual(78, len(app['localized']['en-US']['summary'])) elif packageName == 'eu.siacs.conversations': self.assertEqual('Conversations', app['localized']['en-US']['name'])