From a0b308f3f210e52fb4b5ae1995f53496e2d1abfb Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Tue, 8 Apr 2014 13:25:17 -0700 Subject: [PATCH] add tests and framework --- Changes | 5 +++++ README | 44 +++++++++++++++++++++++++++++++++++++ t/00-load.t | 13 +++++++++++ t/01_pod.t | 7 ------ t/boilerplate.t | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ t/manifest.t | 15 +++++++++++++ t/pod-coverage.t | 20 +++++++++++++++++ t/pod.t | 12 ++++++++++ 8 files changed, 166 insertions(+), 7 deletions(-) create mode 100644 Changes create mode 100644 README create mode 100644 t/00-load.t delete mode 100644 t/01_pod.t create mode 100644 t/boilerplate.t create mode 100644 t/manifest.t create mode 100644 t/pod-coverage.t create mode 100644 t/pod.t diff --git a/Changes b/Changes new file mode 100644 index 0000000..d567072 --- /dev/null +++ b/Changes @@ -0,0 +1,5 @@ +Revision history for Term-ProgressBar-IO + +0.01 Tuesday, April 8, 2014 13:24:58 PDT + First version, released on an unsuspecting world. + diff --git a/README b/README new file mode 100644 index 0000000..62619bd --- /dev/null +++ b/README @@ -0,0 +1,44 @@ +Term-ProgressBar-IO + + +INSTALLATION + +To install this module, run the following commands: + + perl Build.PL + ./Build + ./Build test + ./Build install + +SUPPORT AND DOCUMENTATION + +After installing, you can find documentation for this module with the +perldoc command. + + perldoc Term::ProgressBar::IO + +You can also look for information at: + + RT, CPAN's request tracker (report bugs here) + http://rt.cpan.org/NoAuth/Bugs.html?Dist=Term-ProgressBar-IO + + AnnoCPAN, Annotated CPAN documentation + http://annocpan.org/dist/Term-ProgressBar-IO + + CPAN Ratings + http://cpanratings.perl.org/d/Term-ProgressBar-IO + + Search CPAN + http://search.cpan.org/dist/Term-ProgressBar-IO/ + + +LICENSE AND COPYRIGHT + +Copyright (C) 2014 Don Armstrong + +This program is free software; you can redistribute it and/or modify it +under the terms of either: the GNU General Public License as published +by the Free Software Foundation; or the Artistic License. + +See L for more information. + diff --git a/t/00-load.t b/t/00-load.t new file mode 100644 index 0000000..3fd6430 --- /dev/null +++ b/t/00-load.t @@ -0,0 +1,13 @@ +#!perl -T +use 5.006; +use strict; +use warnings FATAL => 'all'; +use Test::More; + +plan tests => 1; + +BEGIN { + use_ok( 'Term::ProgressBar::IO' ) || print "Bail out!\n"; +} + +diag( "Testing Term::ProgressBar::IO $Term::ProgressBar::IO::VERSION, Perl $], $^X" ); diff --git a/t/01_pod.t b/t/01_pod.t deleted file mode 100644 index 9a2e6b2..0000000 --- a/t/01_pod.t +++ /dev/null @@ -1,7 +0,0 @@ -# -*- mode: cperl; -*- -use Test::More; -eval "use Test::Pod 1.00"; -plan skip_all => "Test::Pod 1.00 required for testing POD" if $@; -all_pod_files_ok(grep {$_ !~ /[~#]$/} - all_pod_files((-e 'blib'?'blib':(qw(lib))), - )); diff --git a/t/boilerplate.t b/t/boilerplate.t new file mode 100644 index 0000000..43cb650 --- /dev/null +++ b/t/boilerplate.t @@ -0,0 +1,57 @@ +#!perl -T +use 5.006; +use strict; +use warnings FATAL => 'all'; +use Test::More; + +plan tests => 3; + +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}||=[]}, $.; + } + } + } + + if (%violated) { + fail("$filename contains boilerplate text"); + diag "$_ appears on lines @{$violated{$_}}" for keys %violated; + } else { + pass("$filename contains no boilerplate text"); + } +} + +sub module_boilerplate_ok { + my ($module) = @_; + 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]/, + ); +} + +TODO: { + local $TODO = "Need to replace the boilerplate text"; + + not_in_file_ok(README => + "The README is used..." => qr/The README is used/, + "'version information here'" => qr/to provide version information/, + ); + + not_in_file_ok(Changes => + "placeholder date/time" => qr(Date/time) + ); + + module_boilerplate_ok('lib/Term/ProgressBar/IO.pm'); + + +} + diff --git a/t/manifest.t b/t/manifest.t new file mode 100644 index 0000000..6ddfe36 --- /dev/null +++ b/t/manifest.t @@ -0,0 +1,15 @@ +#!perl -T +use 5.006; +use strict; +use warnings FATAL => 'all'; +use Test::More; + +unless ( $ENV{RELEASE_TESTING} ) { + plan( skip_all => "Author tests not required for installation" ); +} + +my $min_tcm = 0.9; +eval "use Test::CheckManifest $min_tcm"; +plan skip_all => "Test::CheckManifest $min_tcm required" if $@; + +ok_manifest(); diff --git a/t/pod-coverage.t b/t/pod-coverage.t new file mode 100644 index 0000000..866fac2 --- /dev/null +++ b/t/pod-coverage.t @@ -0,0 +1,20 @@ +#!perl -T +use 5.006; +use strict; +use warnings FATAL => 'all'; +use Test::More; + +# Ensure a recent version of Test::Pod::Coverage +my $min_tpc = 1.08; +eval "use Test::Pod::Coverage $min_tpc"; +plan skip_all => "Test::Pod::Coverage $min_tpc required for testing POD coverage" + if $@; + +# Test::Pod::Coverage doesn't require a minimum Pod::Coverage version, +# but older versions don't recognize some common documentation styles +my $min_pc = 0.18; +eval "use Pod::Coverage $min_pc"; +plan skip_all => "Pod::Coverage $min_pc required for testing POD coverage" + if $@; + +all_pod_coverage_ok(); diff --git a/t/pod.t b/t/pod.t new file mode 100644 index 0000000..a0054e9 --- /dev/null +++ b/t/pod.t @@ -0,0 +1,12 @@ +#!perl -T +use 5.006; +use strict; +use warnings FATAL => 'all'; +use Test::More; + +# Ensure a recent version of Test::Pod +my $min_tp = 1.22; +eval "use Test::Pod $min_tp"; +plan skip_all => "Test::Pod $min_tp required for testing POD" if $@; + +all_pod_files_ok(); -- 2.39.2