File 0007-Validate-Appdata-also-when-appstream-util-is-unavail.patch of Package rpmlint.29851

From 33b3aab641f6f71f33fd87f1e1b41ea2e74f48e3 Mon Sep 17 00:00:00 2001
From: Dirk Mueller <dirk@dmllr.de>
Date: Sun, 1 Oct 2017 14:36:40 +0200
Subject: [PATCH] Validate Appdata also when appstream-util is unavailable

When the dependency isn't installed, we can at least still
validate whether the input is valid XML or not. As we're
not printing any validation results anyway this is good
enough.
---
 AppDataCheck.py | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

Index: rpmlint-rpmlint-1.10/AppDataCheck.py
===================================================================
--- rpmlint-rpmlint-1.10.orig/AppDataCheck.py
+++ rpmlint-rpmlint-1.10/AppDataCheck.py
@@ -10,6 +10,7 @@ import AbstractCheck
 import Config
 from Filter import addDetails, printError
 from Pkg import getstatusoutput
+import xml.etree.ElementTree as ET
 
 STANDARD_BIN_DIRS = ['/bin/', '/sbin/', '/usr/bin/', '/usr/sbin/']
 DEFAULT_APPDATA_CHECKER = ('appstream-util', 'validate-relax')
@@ -28,12 +29,18 @@ class AppDataCheck(AbstractCheck.Abstrac
     def check_file(self, pkg, filename):
         root = pkg.dirName()
         f = root + filename
+        validation_failed = False
         try:
             st = getstatusoutput(appdata_checker + (f,))
+            # Return code nonzero?
+            validation_failed = (st[0] != 0)
         except OSError:
-            # ignore if the checker is not installed
-            return
-        if st[0]:
+            # checker is not installed, do a validation manually
+            try:
+                ET.parse(pkg.dirName() + filename)
+            except ET.ParseError:
+                validation_failed = True
+        if validation_failed:
             printError(pkg, 'invalid-appdata-file', filename)
 
 
openSUSE Build Service is sponsored by