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

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