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 <la...@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