[SCM] Debian package checker branch, master, updated. 2.5.11-46-gbba6420
The following commit has been merged in the master branch:
commit bba642038194ae5f949d97f5fc706f2fbf8f1d50
Author: Niels Thykier <niels@thykier.net>
Date: Fri Jan 4 14:42:34 2013 +0100
Test::Lintian: Handle .desc parse errors more gracefully
In case of a parse error, fail/skip test(s), print the filename plus
the relevant error and continue. Previously it would terminate with
the error message but without the filename.
Signed-off-by: Niels Thykier <niels@thykier.net>
diff --git a/lib/Test/Lintian.pm b/lib/Test/Lintian.pm
index e6632a5..527d934 100644
--- a/lib/Test/Lintian.pm
+++ b/lib/Test/Lintian.pm
@@ -141,12 +141,23 @@ sub test_check_desc {
load_profile_for_test ();
foreach my $desc_file (map { _find_check ($find_opt, $_) } @descs) {
- my ($header, @tagpara) = read_dpkg_control ($desc_file);
+ my ($header, @tagpara);
+ eval {
+ ($header, @tagpara) = read_dpkg_control ($desc_file);
+ };
+ if (my $err = $@) {
+ $err =~ s/ at .*? line \d+\s*\n//;
+ $builder->ok (0, "Cannot parse $desc_file");
+ $builder->diag ("Error: $err");
+ next;
+ }
my $cname = $header->{'check-script'}//'';
my $ctype = $header->{'type'} // '';
my $cinfo = $header->{'info'} // '';
my $needs = $header->{'needs-info'} // '';
my $i = 1; # paragraph counter.
+ $builder->ok (1, "Can parse check $desc_file");
+
$builder->isnt_eq ($cname, '', "Check has a name ($desc_file)");
$cname = '<missing>' if $cname eq '';
$tested++;
@@ -351,7 +362,17 @@ sub test_load_checks {
load_profile_for_test ();
foreach my $checkname (@checknames) {
- my $cs = Lintian::CheckScript->new ($dir, $checkname);
+ my $cs;
+ eval {
+ $cs = Lintian::CheckScript->new ($dir, $checkname);
+ };
+ if (my $err = $@) {
+ $err =~ s/ at .*? line \d+\s*\n//;
+ $builder->ok (0, "Cannot parse ${checkname}.desc");
+ $builder->diag ("Error: $err\n");
+ $builder->skip ("Cannot parse ${checkname}.desc");
+ next;
+ }
my $cname = $cs->name;
my $ppkg = $cname;
my $path = $cs->script_path;
@@ -487,7 +508,16 @@ sub test_tags_implemented {
}
foreach my $checkname (@checknames) {
- my $cs = Lintian::CheckScript->new ($dir, $checkname);
+ my $cs;
+ eval {
+ $cs = Lintian::CheckScript->new ($dir, $checkname);
+ };
+ if (my $err = $@) {
+ $err =~ s/ at .*? line \d+\s*\n//;
+ $builder->ok (0, "Cannot parse ${checkname}.desc");
+ $builder->diag ("Error: $err\n");
+ next;
+ }
my $cname = $cs->name;
my $check = $cs->script_path;
my @tags = ();
--
Debian package checker
Reply to: