[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[lintian] 01/01: Don't error out when AppStream metadata is invalid and emit new appstream-metadata-invalid tag instead. (Closes: #879661)



This is an automated email from the git hooks/post-receive script.

lamby pushed a commit to branch master
in repository lintian.

commit 463b6c4c642f11e3bde41aefb7d714cfffc315c6
Author: Chris Lamb <lamby@debian.org>
Date:   Tue Oct 24 15:54:20 2017 -0400

    Don't error out when AppStream metadata is invalid and emit new appstream-metadata-invalid tag instead. (Closes: #879661)
---
 checks/appstream-metadata.desc                        |  7 +++++++
 checks/appstream-metadata.pm                          | 19 +++++++++++++------
 debian/changelog                                      |  3 +++
 .../debian/appstream-metadata-invalid.metadata.xml    |  1 +
 t/tests/appstream-metadata/debian/debian/rules        |  1 +
 t/tests/appstream-metadata/desc                       |  1 +
 t/tests/appstream-metadata/tags                       |  1 +
 7 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/checks/appstream-metadata.desc b/checks/appstream-metadata.desc
index 8d1bcf6..f548640 100644
--- a/checks/appstream-metadata.desc
+++ b/checks/appstream-metadata.desc
@@ -38,3 +38,10 @@ Ref: https://wiki.debian.org/AppStream/Guidelines
 Info: The modalias matching rule in the AppStream metadata file is
  malformed.  Hexadecimal numbers in vendor and product IDs must be
  upper case.
+
+Tag: appstream-metadata-invalid
+Severity: serious
+Certainty: certain
+Ref: https://wiki.debian.org/AppStream/Guidelines
+Info: The specified AppStream metadata file does not consist of
+ valid XML.
diff --git a/checks/appstream-metadata.pm b/checks/appstream-metadata.pm
index cedf59c..d45e84d 100644
--- a/checks/appstream-metadata.pm
+++ b/checks/appstream-metadata.pm
@@ -88,12 +88,19 @@ sub check_modalias {
         # FIXME report this as an error
         return;
     }
-    my $xml = XMLin(
-        $metadatafile->fs_path,
-        ForceArray => ['provides', 'modalias'],
-        KeepRoot => 1,
-        KeyAttr => [],
-    );
+    my $xml = eval {
+        XMLin(
+            $metadatafile->fs_path,
+            ForceArray => ['provides', 'modalias'],
+            KeepRoot => 1,
+            KeyAttr => [],
+        );
+    };
+    if ($@) {
+        tag 'appstream-metadata-invalid', basename($metadatafile->fs_path);
+        return 0;
+    }
+
     if (exists $xml->{'application'}) {
         tag('appstream-metadata-legacy-format', $metadatafile);
         return 0;
diff --git a/debian/changelog b/debian/changelog
index 1af1c0c..2d64e4d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,9 @@ lintian (2.5.56) UNRELEASED; urgency=medium
 
   XXX: generate tag summary
 
+  * checks/appstream-metadata.{pm,desc}:
+    + [CL] Don't error out when AppStream metadata is invalid and emit new
+      appstream-metadata-invalid tag instead.  (Closes: #879661)
   * checks/binaries.desc:
     + [CL] Apply patch from Adrian Bunk to mention the lack of the "-g"
       flag as a common cause for the debug-file-with-no-debug-symbols tag.
diff --git a/t/tests/appstream-metadata/debian/debian/appstream-metadata-invalid.metadata.xml b/t/tests/appstream-metadata/debian/debian/appstream-metadata-invalid.metadata.xml
new file mode 100644
index 0000000..a823b8d
--- /dev/null
+++ b/t/tests/appstream-metadata/debian/debian/appstream-metadata-invalid.metadata.xml
@@ -0,0 +1 @@
+This is not a valid XML document.
diff --git a/t/tests/appstream-metadata/debian/debian/rules b/t/tests/appstream-metadata/debian/debian/rules
index 5302e21..5fb0c35 100644
--- a/t/tests/appstream-metadata/debian/debian/rules
+++ b/t/tests/appstream-metadata/debian/debian/rules
@@ -11,4 +11,5 @@ UDEV_DIR=$(DESTDIR)/lib/udev/rules.d/
 override_dh_install:
 	dh_install
 	install -m 0644 debian/appstream-metadata.metadata.xml $(APPSYNC_DIR)
+	install -m 0644 debian/appstream-metadata-invalid.metadata.xml $(APPSYNC_DIR)
 	install -m 0644 debian/appstream-metadata-obsolete.metadata.xml $(OBSOLETE_APPSYNC_DIR)
diff --git a/t/tests/appstream-metadata/desc b/t/tests/appstream-metadata/desc
index 2a424af..8447da2 100644
--- a/t/tests/appstream-metadata/desc
+++ b/t/tests/appstream-metadata/desc
@@ -6,3 +6,4 @@ Test-For:
  appstream-metadata-legacy-format
  appstream-metadata-missing-modalias-provide
  appstream-metadata-malformed-modalias-provide
+ appstream-metadata-invalid
diff --git a/t/tests/appstream-metadata/tags b/t/tests/appstream-metadata/tags
index 03eeba9..6f13957 100644
--- a/t/tests/appstream-metadata/tags
+++ b/t/tests/appstream-metadata/tags
@@ -1,3 +1,4 @@
+E: appstream-metadata: appstream-metadata-invalid appstream-metadata-invalid.metadata.xml
 E: appstream-metadata: appstream-metadata-legacy-format usr/share/appdata/appstream-metadata-obsolete.metadata.xml
 W: appstream-metadata: appstream-metadata-in-legacy-location usr/share/appdata/appstream-metadata-obsolete.metadata.xml
 W: appstream-metadata: appstream-metadata-malformed-modalias-provide usr/share/metainfo/appstream-metadata.metadata.xml include non-valid hex digit in USB matching rule 'usb:v0000p000ad*'

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/lintian/lintian.git


Reply to: