File: critic.t

package info (click to toggle)
lintian 2.5.10.4
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 12,608 kB
  • sloc: perl: 12,430; sh: 5,787; makefile: 2,834; xml: 1,125; ansic: 347; python: 28; java: 9; tcl: 4; sed: 3
file content (56 lines) | stat: -rwxr-xr-x 1,178 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/usr/bin/perl

use strict;
use Test::More;

sub should_skip();


chdir ($ENV{'LINTIAN_ROOT'})
    or die ("fatal error: could not chdir to $ENV{LINTIAN_ROOT}: $!");

plan skip_all => 'Only UNRELEASED versions are criticised'
    if should_skip();


eval 'use Test::Perl::Critic 1.00';
plan skip_all => "Test::Perl::Critic 1.00 required to run this test" if $@;

eval 'use PPIx::Regexp';
diag('libppix-regexp-perl is needed to enable some checks') if $@;


Test::Perl::Critic->import( -profile => '.perlcriticrc' );


our @CHECKS = glob ('checks/*[!.]*[!c]');
plan tests => scalar(@CHECKS)+1;

for my $check (@CHECKS) {
    critic_ok($check);
}

subtest 'All scripts with correct shebang or extension' => sub {
    all_critic_ok(qw(collection frontend lib unpack));
};

sub should_skip() {
    my $skip = 1;
    my $pid;

    return $skip unless (defined ($ENV{'CRITICISE'}));

    $pid = open (DPKG, '-|', 'dpkg-parsechangelog', '-c0');

    die("failed to execute dpkg-parsechangelog: $!")
	unless defined ($pid);
    
    while (<DPKG>) {
	$skip = 0 if m/^Distribution: UNRELEASED$/;
    }

    close(DPKG)
	or die ("dpkg-parsechangelog returned: $?");

    return $skip;
}