I'm writing a test which does basic checks on all the code in a repository.
It checks that all scripts and modules compile without warnings.  I also
want to check that all the POD has no errors or warnings.  However, a
lot of the code has no POD.  I don't want to write all the POD right now,
but I do want to test what POD there is.  Ideally, it would look
something like:

    if( has_pod( $file ) ) {
        pod_ok($file, POD_OK);
    }
    else {
        TODO: { local $TODO = "$file needs docs";  fail("$fail has no docs"); }
    }

Since I don't have a has_pod(), I figured this would work:

    pod_ok($file, NO_POD|POD_OK);

using the Test::Pod flags as a bitmask.  It doesn't.  It would be nice if
it did.


Also, pod_ok($INC{"Test/Pod.pm"}) fails.  I've added dogfood.t to check
that. :)


Patch attached.

--- Test-Pod-0.90/MANIFEST      2002-09-06 06:06:12.000000000 +0200
+++ Test-Pod-0.90.new/MANIFEST  2003-02-28 17:17:37.000000000 +0100
@@ -3,6 +3,7 @@
 Makefile.PL
 lib/Pod.pm
 t/check_pod.t
+t/dogfood.t
 t/load.t
 t/pod_ok.t
 t/pod/bad.pod

--- Test-Pod-0.90/lib/Pod.pm    2002-12-04 02:07:25.000000000 +0100
+++ Test-Pod-0.90.new/lib/Pod.pm        2003-02-28 17:18:24.000000000 +0100
@@ -35,19 +35,11 @@
 
 my $Test = Test::Builder->new;
 
-use constant OK       =>  0;
-use constant NO_FILE  => -2;
-use constant NO_POD   => -1;
-use constant WARNINGS =>  1;
-use constant ERRORS   =>  2;
-
-my %Constants = qw(
-        0 POD_OK
-       -2 NO_FILE
-       -1 NO_POD
-        1 POD_WARNINGS
-        2 POD_ERRORS
-       );
+use constant OK       =>  1;
+use constant NO_FILE  =>  2;
+use constant NO_POD   =>  4;
+use constant WARNINGS =>  8;
+use constant ERRORS   =>  16;
 
 sub import
        {
@@ -105,7 +97,7 @@
 
        my $status = $hash->{result};
 
-       if( defined $expected and $expected eq $status )
+       if( defined $expected and $expected & $status )
                {
                $Test->ok( 1, $name );
                }
@@ -178,6 +170,8 @@
        return \%hash;
        }
 
+=back
+
 =head1 SOURCE AVAILABILITY
 
 This source is part of a SourceForge project which always has the

--- Test-Pod-0.90/t/pod_ok.t    2002-11-15 03:12:33.000000000 +0100
+++ Test-Pod-0.90.new/t/pod_ok.t        2003-02-28 17:20:20.000000000 +0100
@@ -6,7 +6,7 @@
 
 {
 my $name = 'test ok';
-test_out( map "ok $_ - $name", 1 .. 9 );
+test_out( map "ok $_ - $name", 1 .. 11 );
 pod_ok( "t/pod/good.pod",         undef,       , $name );
 pod_ok( "t/pod/good.pod",         POD_OK       , $name );
 pod_ok( "t/pod/good.pod",         POD_WARNINGS , $name );
@@ -16,8 +16,10 @@
 
 pod_ok( "t/pod/warning.pod",      POD_WARNINGS , $name );
 pod_ok( "t/pod/warning.pod",      POD_ERRORS   , $name );
+pod_ok( "t/pod/warning.pod",      POD_WARNINGS|POD_ERRORS   , $name );
 
 pod_ok( "t/pod/no_pod.pod",       NO_POD       , $name );
+pod_ok( "t/pod/no_pod.pod",       NO_POD|POD_OK, $name );
 
 pod_ok( "t/pod/doesnt_exist.pod", NO_FILE      , $name );
 test_test( 'All files okay with explicit expectations' );

--- Test-Pod-0.90/t/test_manifest       2002-08-19 07:26:35.000000000 +0200
+++ Test-Pod-0.90.new/t/test_manifest   2003-02-28 17:17:46.000000000 +0100
@@ -1,3 +1,4 @@
 load.t
 check_pod.t
 pod_ok.t
+dogfood.t

--- /dev/null   2003-02-28 16:51:20.000000000 +0100
+++ Test-Pod-0.90.new/t/dogfood.t       2003-02-28 17:17:52.000000000 +0100
@@ -0,0 +1,8 @@
+#!/usr/bin/perl -w
+
+# $Id$
+
+use strict;
+use Test::Pod tests => 1;
+
+pod_ok($INC{'Test/Pod.pm'}, undef, "Test::Pod's POD is ok");

Reply via email to