Perl-Critic-PJCJ
view release on metacpan or search on metacpan
t/CodeLayout/ProhibitLongLines/gitattributes.t view on Meta::CPAN
}
sub require_git () {
skip "git not available" unless git_available();
my $dir = setup_git_repo();
skip "could not initialise git repo" unless $dir;
$dir
}
sub test_ignore_attribute () {
my $dir = require_git();
my $policy = Perl::Critic::Policy::CodeLayout::ProhibitLongLines->new;
my $path = write_perl_file($dir, "ignore.t", "$Long_line\n");
my @v = violations_for_file($policy, $path);
is scalar @v, 0, "no violations when attribute is ignore";
}
sub test_numeric_attribute () {
my $dir = require_git();
my $policy = Perl::Critic::Policy::CodeLayout::ProhibitLongLines->new;
# 81-char line is fine under limit of 200
my $path = write_perl_file($dir, "wide.t", "$Long_line\n");
my @v = violations_for_file($policy, $path);
is scalar @v, 0, "81-char line within 200-char override";
# A 201-char line should still violate
my $very_long = "x" x 201;
$path = write_perl_file($dir, "wide.t", "$very_long\n");
@v = violations_for_file($policy, $path);
is scalar @v, 1, "201-char line exceeds 200-char override";
}
sub test_unspecified_attribute () {
my $dir = require_git();
my $policy = Perl::Critic::Policy::CodeLayout::ProhibitLongLines->new;
# normal.t has no gitattributes entry, so default 80 applies
my $path = write_perl_file($dir, "normal.t", "$Long_line\n");
my @v = violations_for_file($policy, $path);
is scalar @v, 1, "81-char line violates default 80-char limit";
}
sub test_no_filename () {
# PPI::Document from string ref has no filename
my $policy = Perl::Critic::Policy::CodeLayout::ProhibitLongLines->new;
my $doc = PPI::Document->new(\$Long_line);
my @v = $policy->violates($doc, $doc);
is scalar @v, 1, "string input (no filename) uses default limit";
}
sub test_feature_disabled () {
my $dir = require_git();
my $policy = Perl::Critic::Policy::CodeLayout::ProhibitLongLines->new;
$policy->{_gitattributes_line_length} = "";
# ignore.t would be ignored if the feature were active
my $path = write_perl_file($dir, "ignore.t", "$Long_line\n");
my @v = violations_for_file($policy, $path);
is scalar @v, 1, "violations reported when feature is disabled";
}
sub test_get_gitattr_line_length () {
my $dir = require_git();
my $policy = Perl::Critic::Policy::CodeLayout::ProhibitLongLines->new;
# Need actual files for git check-attr
write_perl_file($dir, "ignore.t", "1;\n");
write_perl_file($dir, "wide.t", "1;\n");
write_perl_file($dir, "normal.t", "1;\n");
is $policy->_get_gitattr_line_length("$dir/ignore.t"), "ignore",
"ignore attribute";
( run in 1.311 second using v1.01-cache-2.11-cpan-39bf76dae61 )