diff options
Diffstat (limited to 'perl/t')
| -rwxr-xr-x | perl/t/docs/pod-spelling.t | 112 | ||||
| -rwxr-xr-x | perl/t/docs/pod.t | 64 | 
2 files changed, 109 insertions, 67 deletions
| diff --git a/perl/t/docs/pod-spelling.t b/perl/t/docs/pod-spelling.t index 577a99e..6debd42 100755 --- a/perl/t/docs/pod-spelling.t +++ b/perl/t/docs/pod-spelling.t @@ -1,74 +1,66 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl  # -# Check for spelling errors in POD documentation +# Check for spelling errors in POD documentation.  # -# Checks all POD files in the tree for spelling problems using Pod::Spell and -# either aspell or ispell.  aspell is preferred.  This test is disabled unless -# RRA_MAINTAINER_TESTS is set, since spelling dictionaries vary too much -# between environments. +# The canonical version of this file is maintained in the rra-c-util package, +# which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.  # -# Copyright 2008, 2009 Russ Allbery <eagle@eyrie.org> +# Written by Russ Allbery <eagle@eyrie.org> +# Copyright 2013, 2014 +#     The Board of Trustees of the Leland Stanford Junior University  # -# See LICENSE for licensing terms. +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +use 5.006;  use strict; +use warnings; + +use lib 't/lib'; +  use Test::More; +use Test::RRA qw(skip_unless_author use_prereq); -# Skip all spelling tests unless the maintainer environment variable is set. -plan skip_all => 'Spelling tests only run for maintainer' -    unless $ENV{RRA_MAINTAINER_TESTS}; +# Only run this test for the module author since the required stopwords are +# too sensitive to the exact spell-checking program and dictionary. +skip_unless_author('Spelling tests'); -# Load required Perl modules. -eval 'use Test::Pod 1.00'; -plan skip_all => 'Test::Pod 1.00 required for testing POD' if $@; -eval 'use Pod::Spell'; -plan skip_all => 'Pod::Spell required to test POD spelling' if $@; +# Load prerequisite modules. +use_prereq('Test::Spelling'); -# Locate a spell-checker.  hunspell is not currently supported due to its lack -# of support for contractions (at least in the version in Debian). -my @spell; -my %options = (aspell => [ qw(-d en_US --home-dir=./ list) ], -               ispell => [ qw(-d american -l -p /dev/null) ]); -SEARCH: for my $program (qw/aspell ispell/) { -    for my $dir (split ':', $ENV{PATH}) { -        if (-x "$dir/$program") { -            @spell = ("$dir/$program", @{ $options{$program} }); -        } -        last SEARCH if @spell; +# Check all POD in the Perl distribution.  Add the examples directory if it +# exists.  Also add any files in usr/bin or usr/sbin, which are widely used in +# Stanford-internal packages. +my @files = all_pod_files(); +if (-d 'examples') { +    push(@files, all_pod_files('examples')); +} +for my $dir (qw(usr/bin usr/sbin)) { +    if (-d $dir) { +        push(@files, glob("$dir/*"));      }  } -plan skip_all => 'aspell or ispell required to test POD spelling' -    unless @spell; - -# Prerequisites are satisfied, so we're going to do some testing.  Figure out -# what POD files we have and from that develop our plan. -$| = 1; -my @pod = all_pod_files (); -plan tests => scalar @pod; -# Finally, do the checks. -for my $pod (@pod) { -    my $child = open (CHILD, '-|'); -    if (not defined $child) { -        die "Cannot fork: $!\n"; -    } elsif ($child == 0) { -        my $pid = open (SPELL, '|-', @spell) or die "Cannot run @spell: $!\n"; -        open (POD, '<', $pod) or die "Cannot open $pod: $!\n"; -        my $parser = Pod::Spell->new; -        $parser->parse_from_filehandle (\*POD, \*SPELL); -        close POD; -        close SPELL; -        exit ($? >> 8); -    } else { -        my @words = <CHILD>; -        close CHILD; -      SKIP: { -            skip "@spell failed for $pod", 1 unless $? == 0; -            for (@words) { -                s/^\s+//; -                s/\s+$//; -            } -            is ("@words", '', $pod); -        } -    } +# We now have a list of all files to check, so output a plan and run the +# tests.  We can't use all_pod_files_spelling_ok because it refuses to check +# non-Perl files and Stanford-internal packages have a lot of shell scripts +# with POD documentation. +plan tests => scalar(@files); +for my $file (@files) { +    pod_file_spelling_ok($file);  } diff --git a/perl/t/docs/pod.t b/perl/t/docs/pod.t index dfcf88e..674ce30 100755 --- a/perl/t/docs/pod.t +++ b/perl/t/docs/pod.t @@ -1,15 +1,65 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl  # -# Test POD formatting for the wallet Perl modules. +# Check all POD documents for POD formatting errors. +# +# The canonical version of this file is maintained in the rra-c-util package, +# which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.  #  # Written by Russ Allbery <eagle@eyrie.org> -# Copyright 2007, 2010 +# Copyright 2012, 2013, 2014  #     The Board of Trustees of the Leland Stanford Junior University  # -# See LICENSE for licensing terms. +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. +use 5.006;  use strict; +use warnings; + +use lib 't/lib'; +  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 (); +use Test::RRA qw(skip_unless_automated use_prereq); + +# Skip this test for normal user installs, although pod2man may still fail. +skip_unless_automated('POD syntax tests'); + +# Load prerequisite modules. +use_prereq('Test::Pod'); + +# Check all POD in the Perl distribution.  Add the examples directory if it +# exists.  Also add any files in usr/bin or usr/sbin, which are widely used in +# Stanford-internal packages. +my @files = all_pod_files(); +if (-d 'examples') { +    push(@files, all_pod_files('examples')); +} +for my $dir (qw(usr/bin usr/sbin)) { +    if (-d $dir) { +        push(@files, glob("$dir/*")); +    } +} + +# We now have a list of all files to check, so output a plan and run the +# tests.  We can't use all_pod_files_ok because it refuses to check non-Perl +# files and Stanford-internal packages have a lot of shell scripts with POD +# documentation. +plan tests => scalar(@files); +for my $file (@files) { +    pod_file_ok($file); +} | 
