Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Test::Pod::Coverage and all_pod_coverage_ok

by geektron (Curate)
on Sep 29, 2005 at 21:53 UTC ( [id://496259] : perlquestion . print w/replies, xml ) Need Help??

geektron has asked for the wisdom of the Perl Monks concerning the following question:

In my last steps to become a "real tester" I've been throwing in some POD tests to make sure I have all my subs documented. Test::Pod::Coverage is of course the tool of choice, but I think I'm misusing  all_pod_coverage_ok (or  all_modules.

I'm not trying to test a distribution (in the strictest sense of the word), but I am trying to test a collection of database-interaction modules.

my first thought, since this isn't a packaged dist, was to use  all_modules( $dir );, but that gives me:

[me@2 t]$ prove -v 900_pod_coverage.t 900_pod_coverage....Undefined subroutine &main::all_modules called at +900_pod_coverage.t line 9.
but the code is very straightforward, or so i thought:
# -*- perl -*- # t/900_pod_coverage.t - check POD coverage for new modules use Test::Pod::Coverage; # tests => 1; use lib qw# /home/httpd/path/to/my/plugins/ #; my $dir = q{/home/httpd/path/to/my/plugins/}; ## also tried the commented out ... # my @moduleList = all_modules( 'DataClasses' ); my @moduleList = all_modules( $dir ); foreach my $mod ( @moduleList ) { pod_coverage_ok( $mod, 'reporting code is documented' ); }
I must be missing something obvious. Sure, I could switch over to something like readdir() ... At this point, I want to know if I'm way of the path of the module's intentions, since the perldoc isn't too descriptive.

Replies are listed 'Best First'.
Re: Test::Pod::Coverage and all_pod_coverage_ok
by chromatic (Archbishop) on Sep 29, 2005 at 22:43 UTC

    The module only exports pod_coverage_ok and all_pod_coverage_ok. It should be clearer about that. I'll file a bug.

      well, that does answer the question. thanks!

      i'll just have to find a workaround for now, but that's not difficult. a quick regex like  $mod =~ s/\//::/g; before passing the name into  pod_coverage_ok() should do.

Re: Test::Pod::Coverage and all_pod_coverage_ok
by ghenry (Vicar) on Sep 29, 2005 at 22:06 UTC

    Update: I've re-read the docs and it says to use $dir

    According to the docs, it's all_modules( [@dirs] )

    Aren't you passing it a $scalar ??

    Also, that error usually means all_modules hasn't been imported, no?

    Walking the road to enlightenment... I found a penguin and a camel on the way.....
    Fancy a Just ask!!!
      yes, i passed it a scalar. and i just passed it an arrayref.

      somehow, all_modules isn't getting imported into the calling space. the error *isn't* that all_modules didn't return anything, it's that all_modules is an undefined sub.