Initial Commit
This commit is contained in:
205
database/perl/vendor/lib/TAP/Harness/Restricted.pm
vendored
Normal file
205
database/perl/vendor/lib/TAP/Harness/Restricted.pm
vendored
Normal file
@@ -0,0 +1,205 @@
|
||||
use 5.008001;
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
package TAP::Harness::Restricted;
|
||||
# ABSTRACT: Skip some test files
|
||||
|
||||
our $VERSION = '0.004';
|
||||
|
||||
use superclass 'TAP::Harness' => 3.18;
|
||||
use Path::Tiny;
|
||||
|
||||
sub aggregate_tests {
|
||||
my ( $self, $aggregate, @tests ) = @_;
|
||||
my %banned_files = map { $_ => undef } map { glob } split " ",
|
||||
$ENV{HARNESS_SKIP} || '';
|
||||
@tests = grep { _file_ok( $_, \%banned_files ) } @tests;
|
||||
return $self->SUPER::aggregate_tests( $aggregate, @tests );
|
||||
}
|
||||
|
||||
my $maybe_prefix = qr/(?:\d+[_-]?)?/;
|
||||
|
||||
my @banned_names = (
|
||||
qr/${maybe_prefix}pod\.t/,
|
||||
qr/${maybe_prefix}pod[_-]?coverage\.t/,
|
||||
qr/${maybe_prefix}pod[_-]?spell(?:ing)?\.t/,
|
||||
qr/${maybe_prefix}perl[_-]?critic\.t/,
|
||||
qr/${maybe_prefix}kwalitee\.t/,
|
||||
);
|
||||
|
||||
my @banned_code = (
|
||||
qr/\b (?: use | require )\ Test::(?:
|
||||
CleanNamespaces | DependentModules | EOL | Kwalitee | Mojibake
|
||||
| NoTabs | Perl::Critic | Pod | Portability::Files | Spelling | Vars
|
||||
)\b/x,
|
||||
);
|
||||
|
||||
sub _file_ok {
|
||||
my $file = path(shift);
|
||||
my $banned_files = shift;
|
||||
return unless $file->exists;
|
||||
my $basename = $file->basename;
|
||||
return if grep { $basename =~ $_ } @banned_names;
|
||||
return if exists $banned_files->{ $file->relative };
|
||||
my $guts = $file->slurp;
|
||||
return if grep { $guts =~ m{$_}ms } @banned_code;
|
||||
return 1;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
|
||||
# vim: ts=4 sts=4 sw=4 et:
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
TAP::Harness::Restricted - Skip some test files
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 0.004
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
# command line
|
||||
$ HARNESS_SUBCLASS=TAP::Harness::Restricted make test
|
||||
|
||||
# bashrc file
|
||||
export HARNESS_SUBCLASS=TAP::Harness::Restricted
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This module is a trivial subclass of L<TAP::Harness>. It overrides the
|
||||
C<aggregate_tests> function to filter out tests that I didn't want getting in
|
||||
the way of module installation.
|
||||
|
||||
The current criteria include:
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
File names that look like F<pod.t> or F<pod-coverage.t>, with optional leading numbers
|
||||
|
||||
=item *
|
||||
|
||||
Files matching any of the space-separated glob patterns in C<$ENV{HARNESS_SKIP}>
|
||||
|
||||
=item *
|
||||
|
||||
Files that look like author tests based on the modules they use or require
|
||||
|
||||
=back
|
||||
|
||||
The list of modules to exclude is:
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Test::CleanNamespaces
|
||||
|
||||
=item *
|
||||
|
||||
Test::DependentModules
|
||||
|
||||
=item *
|
||||
|
||||
Test::EOL
|
||||
|
||||
=item *
|
||||
|
||||
Test::Kwalitee
|
||||
|
||||
=item *
|
||||
|
||||
Test::Mojibake
|
||||
|
||||
=item *
|
||||
|
||||
Test::NoTabs
|
||||
|
||||
=item *
|
||||
|
||||
Test::Perl::Critic
|
||||
|
||||
=item *
|
||||
|
||||
Test::Pod
|
||||
|
||||
=item *
|
||||
|
||||
Test::Portability::Files
|
||||
|
||||
=item *
|
||||
|
||||
Test::Spelling
|
||||
|
||||
=item *
|
||||
|
||||
Test::Vars
|
||||
|
||||
=back
|
||||
|
||||
Suggestions for other annoying things to filter out are welcome.
|
||||
|
||||
If someone is inclined to make this extensible so people can put their own criteria into
|
||||
configuration files, please email the author with ideas before sending a patch.
|
||||
|
||||
=for Pod::Coverage method_names_here
|
||||
|
||||
=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
|
||||
|
||||
=head1 SUPPORT
|
||||
|
||||
=head2 Bugs / Feature Requests
|
||||
|
||||
Please report any bugs or feature requests through the issue tracker
|
||||
at L<https://github.com/dagolden/TAP-Harness-Restricted/issues>.
|
||||
You will be notified automatically of any progress on your issue.
|
||||
|
||||
=head2 Source Code
|
||||
|
||||
This is open source software. The code repository is available for
|
||||
public review and contribution under the terms of the license.
|
||||
|
||||
L<https://github.com/dagolden/TAP-Harness-Restricted>
|
||||
|
||||
git clone https://github.com/dagolden/TAP-Harness-Restricted.git
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
David Golden <dagolden@cpan.org>
|
||||
|
||||
=head1 CONTRIBUTORS
|
||||
|
||||
=for stopwords Dagfinn Ilmari Mannsåker grr
|
||||
|
||||
=over 4
|
||||
|
||||
=item *
|
||||
|
||||
Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>
|
||||
|
||||
=item *
|
||||
|
||||
grr <grr@users.noreply.github.com>
|
||||
|
||||
=back
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is Copyright (c) 2013 by David Golden.
|
||||
|
||||
This is free software, licensed under:
|
||||
|
||||
The Apache License, Version 2.0, January 2004
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user