1# Testing of Pod::Find 2# Author: Marek Rouchal <marek@saftsack.fs.uni-bayreuth.de> 3 4BEGIN { 5 if($ENV{PERL_CORE}) { 6 chdir 't' if -d 't'; 7 # The ../../../../../lib is for finding lib/utf8.pm 8 # when running under all-utf8 settings (pod/find.t) 9 # does not directly require lib/utf8.pm but regular 10 # expressions will need that. 11 @INC = qw(../lib ../../../../../lib); 12 } 13} 14 15$| = 1; 16 17use Test; 18 19BEGIN { 20 plan tests => 4; 21 use File::Spec; 22} 23 24use Pod::Find qw(pod_find pod_where); 25use File::Spec; 26 27# load successful 28ok(1); 29 30require Cwd; 31my $THISDIR = Cwd::cwd(); 32my $VERBOSE = $ENV{PERL_CORE} ? 0 : ($ENV{TEST_VERBOSE} || 0); 33my $lib_dir = $ENV{PERL_CORE} ? 34 File::Spec->catdir('pod', 'testpods', 'lib') 35 : File::Spec->catdir($THISDIR,'lib'); 36if ($^O eq 'VMS') { 37 $lib_dir = $ENV{PERL_CORE} ? 38 VMS::Filespec::unixify(File::Spec->catdir('pod', 'testpods', 'lib')) 39 : VMS::Filespec::unixify(File::Spec->catdir($THISDIR,'-','lib','pod')); 40 $Qlib_dir = $lib_dir; 41 $Qlib_dir =~ s#\/#::#g; 42} 43 44print "### searching $lib_dir\n"; 45my %pods = pod_find($lib_dir); 46my $result = join(',', sort values %pods); 47print "### found $result\n"; 48my $compare = $ENV{PERL_CORE} ? 49 join(',', sort qw( 50 Pod::Stuff 51)) 52 : join(',', sort qw( 53 Pod::Checker 54 Pod::Find 55 Pod::InputObjects 56 Pod::ParseUtils 57 Pod::Parser 58 Pod::PlainText 59 Pod::Select 60 Pod::Usage 61)); 62if ($^O eq 'VMS') { 63 $compare = lc($compare); 64 my $undollared = $Qlib_dir; 65 $undollared =~ s/\$/\\\$/g; 66 $undollared =~ s/\-/\\\-/g; 67 $result =~ s/$undollared/pod::/g; 68 $result =~ s/\$//g; 69 my $count = 0; 70 my @result = split(/,/,$result); 71 my @compare = split(/,/,$compare); 72 foreach(@compare) { 73 $count += grep {/$_/} @result; 74 } 75 ok($count/($#result+1)-1,$#compare); 76} 77elsif (File::Spec->case_tolerant || $^O eq 'dos') { 78 ok(lc $result,lc $compare); 79} 80else { 81 ok($result,$compare); 82} 83 84print "### searching for File::Find\n"; 85$result = pod_where({ -inc => 1, -verbose => $VERBOSE }, 'File::Find') 86 || 'undef - pod not found!'; 87print "### found $result\n"; 88 89require Config; 90if ($^O eq 'VMS') { # privlib is perl_root:[lib] OK but not under mms 91 $compare = "lib.File]Find.pm"; 92 $result =~ s/perl_root:\[\-?\.?//i; 93 $result =~ s/\[\-?\.?//i; # needed under `mms test` 94 ok($result,$compare); 95} 96else { 97 $compare = $ENV{PERL_CORE} ? 98 File::Spec->catfile(File::Spec->updir, 'lib','File','Find.pm') 99 : File::Spec->catfile($Config::Config{privlib},"File","Find.pm"); 100 ok(_canon($result),_canon($compare)); 101} 102 103# Search for a documentation pod rather than a module 104my $searchpod = 'Stuff'; 105print "### searching for $searchpod.pod\n"; 106$result = pod_where( 107 { -dirs => [ File::Spec->catdir( 108 $ENV{PERL_CORE} ? () : qw(t), 'pod', 'testpods', 'lib', 'Pod') ], 109 -verbose => $VERBOSE }, $searchpod) 110 || "undef - $searchpod.pod not found!"; 111print "### found $result\n"; 112 113$compare = File::Spec->catfile( 114 $ENV{PERL_CORE} ? () : qw(t), 115 'pod', 'testpods', 'lib', 'Pod' ,'Stuff.pm'); 116ok(_canon($result),_canon($compare)); 117 118# make the path as generic as possible 119sub _canon 120{ 121 my ($path) = @_; 122 $path = File::Spec->canonpath($path); 123 my @comp = File::Spec->splitpath($path); 124 my @dir = File::Spec->splitdir($comp[1]); 125 $comp[1] = File::Spec->catdir(@dir); 126 $path = File::Spec->catpath(@comp); 127 $path = uc($path) if File::Spec->case_tolerant; 128 print "### general path: $path\n" if $VERBOSE; 129 $path; 130} 131 132