App-Git-Workflow

 view release on metacpan or  search on metacpan

t/boilerplate.t  view on Meta::CPAN

#!/usr/bin/perl

use strict;
use warnings;
use Test::More;
use Test::Warnings;

sub not_in_file_ok {
    my ( $filename, %regex ) = @_;
    open( my $fh, '<', $filename )
        or die "couldn't open $filename for reading: $!";

    my %violated;

    while ( my $line = <$fh> ) {
        while ( my ( $desc, $regex ) = each %regex ) {
            if ( $line =~ $regex ) {
                push @{ $violated{$desc} ||= [] }, $.;

t/boilerplate.t  view on Meta::CPAN


    for my $test ( keys %regex ) {
        ok !$violated{$test}, $test
            or diag "$test appears on lines @{$violated{$_}}";
    }
}

sub module_boilerplate_ok {
    my ($module) = @_;
    subtest $module => sub {
        not_in_file_ok(
            $module => 'the great new $MODULENAME' => qr/ - The great new /,
            'boilerplate description' => qr/Quick summary of what the module/,
            'stub function definition' => qr/function[12]/,
            'module description'       => qr/One-line description of module/,
            'description'    => qr/A full description of the module/,
            'subs / methods' => qr/section listing the public components/,
            'diagnostics'    => qr/A list of every error and warning message/,
            'config and environment' =>
                qr/A full explanation of any configuration/,
            'dependencies' =>
                qr/A list of all of the other modules that this module relies upon/,
            'incompatible' => qr/any modules that this module cannot be used/,
            'bugs and limitations' => qr/A list of known problems/,
            'contact details'      => qr/<contact address>/,
        );
    };
}

subtest 'README' => sub {
    not_in_file_ok(
        ( -f 'README' ? 'README' : 'README.pod' ) =>
            "The README is used..." => qr/The README is used/,
        "'version information here'" => qr/to provide version information/,
    );
};

subtest 'Changes' => sub {
    not_in_file_ok( Changes => "placeholder date/time" => qr(Date/time) );
};

module_boilerplate_ok('bin/git-amend');
module_boilerplate_ok('bin/git-branch-age');
module_boilerplate_ok('bin/git-branch-clean');
module_boilerplate_ok('bin/git-branch-grep');
module_boilerplate_ok('bin/git-branches');
module_boilerplate_ok('bin/git-brs');
module_boilerplate_ok('bin/git-changes');
module_boilerplate_ok('bin/git-committers');



( run in 0.586 second using v1.01-cache-2.11-cpan-cc502c75498 )