[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: