From a2bb75f52c2eee1ffacee3c9ef31d9bda3ebf531 Mon Sep 17 00:00:00 2001
From: mueller-ma <mueller-ma@users.noreply.github.com>
Date: Fri, 5 Oct 2018 22:16:00 +0200
Subject: [PATCH] Improve app (store) string checking (#1032)

* Catch specific error in Python script
* Improve app (store) string checking

Signed-off-by: mueller-ma <mueller-ma@users.noreply.github.com>
---
 .../generate_and_validate.py                  | 45 +++++++++++++++++--
 1 file changed, 41 insertions(+), 4 deletions(-)

diff --git a/assets/store_descriptions/generate_and_validate.py b/assets/store_descriptions/generate_and_validate.py
index 338fc764..53bca0bf 100755
--- a/assets/store_descriptions/generate_and_validate.py
+++ b/assets/store_descriptions/generate_and_validate.py
@@ -21,14 +21,15 @@ def getString(key):
         string = root.findall(key)[0].text
         if emptyStringPattern.match(string):
             string = getEnglishString(key)
-    except:
+    except TypeError:
         string = getEnglishString(key)
     return(string)
 
 playDevSiteDescription = "Play Store developer site description:\n"
 
-stringsFiles = glob.glob('assets/store_descriptions/*/strings.xml')
-for file in stringsFiles:
+print("Checking app store strings...")
+appStoreStringsFiles = glob.glob('assets/store_descriptions/*/strings.xml')
+for file in appStoreStringsFiles:
     tree = ET.parse(file)
     root = tree.getroot()
     lang = file[26:-12]
@@ -69,16 +70,36 @@ for file in stringsFiles:
         fullDescription += getString('fdroid_anti_features_text') + "\n\n\n"
         fullDescription += getString('fdroid_privacy_policy')
 
+    # Validate full description
+    if getString('empty_point') != "• ..." and getString('empty_point') != "... •":
+        print("'empty_point' of " + lang + " is incorrect")
+        exitCode += 1
+
+    openhabOccurences = [m.start() for m in re.finditer("openhab", fullDescription, re.I)]
+    for i in openhabOccurences:
+        openhabString = fullDescription[i:i+7]
+        if openhabString != "openhab" and openhabString != "openHAB": # "openhab" is used in links
+            print("Incorrect spelling of openHAB in " + lang)
+            exitCode += 1
+
+    if "http://" in fullDescription:
+        print("HTTP link found in " + lang)
+        exitCode += 1
+
+    if '<a href="https://f-droid.org/packages/org.openhab.habdroid/">' not in getString('fdroid_beta') or "</a>" not in getString('fdroid_beta'):
+        print("Missing tags in 'fdroid_beta' of " + lang)
+        exitCode += 1
+
     if len(fullDescription) > 4000:
         print("Full description of " + lang + " is too long: " + str(len(fullDescription)) + " > 4000 chars")
         exitCode += 1
 
+    # Validate short description
     shortDescription = getString('short_description')
     if len(shortDescription) > 80:
         print("Short description of " + lang + " is too long: " + str(len(shortDescription)) + " > 80 chars")
         exitCode += 1
 
-
     newpath = r'fastlane/metadata/android/' + lang + '/'
     if not os.path.exists(newpath):
             os.makedirs(newpath)
@@ -98,4 +119,20 @@ for file in stringsFiles:
             exitCode += 1
 
 print("\n\n" + playDevSiteDescription)
+
+
+print("\n\nChecking app strings...")
+appStringsFiles = glob.glob('mobile/src/main/res/values-*/strings.xml')
+for file in appStringsFiles:
+    lang = file[27:-12]
+    print("Processing " + lang)
+    strings = open(file, "r").read()
+
+    openhabOccurences = [m.start() for m in re.finditer("openhab", strings, re.I)]
+    for i in openhabOccurences:
+        openhabString = strings[i:i+7]
+        if openhabString != "openhab" and openhabString != "openHAB": # "openhab" is used in links
+            print("Incorrect spelling of openHAB in " + lang)
+            exitCode += 1
+
 exit(exitCode)
-- 
GitLab