CGI-Application-Plugin-ViewCode-1.02/ 0000775 0000764 0000764 00000000000 10352565455 020442 5 ustar mpeters mpeters 0000000 0000000 CGI-Application-Plugin-ViewCode-1.02/t/ 0000775 0000764 0000764 00000000000 10352565455 020705 5 ustar mpeters mpeters 0000000 0000000 CGI-Application-Plugin-ViewCode-1.02/t/04-errors.t 0000664 0000764 0000764 00000001623 10352565455 022631 0 ustar mpeters mpeters 0000000 0000000 use Test::More; use CGI; use lib 't/lib'; use MyBase::MyApp; use strict; #plan(tests => 23); plan('no_plan'); $ENV{'CGI_APP_RETURN_ONLY'} = 1; # 1..2 # non existant module { my $module = 'Some::NonExistant::Module'; my $cgi = CGI->new({ rm => 'view_code', module => $module, }); my $app = MyBase::MyApp->new( QUERY => $cgi ); my $output = $app->run(); like($output, qr/View Source Error/i); like($output, qr/Module \Q$module\E does not exist/i); } # 3..4 # non existant file { my $module = 'Some::NonExistant::Module'; my $file = 'Some/NonExistant/Module.pm'; my $cgi = CGI->new({ rm => 'view_code', module => $module, }); $INC{$file} = $file; my $app = MyBase::MyApp->new( QUERY => $cgi ); my $output = $app->run(); like($output, qr/View Source Error/i); like($output, qr/File \Q$file\E does not exist/i); } CGI-Application-Plugin-ViewCode-1.02/t/03-view_pod.t 0000664 0000764 0000764 00000001357 10352565455 023134 0 ustar mpeters mpeters 0000000 0000000 use Test::More; use Test::LongString; use CGI; use lib 't/lib'; use MyBase::MyApp; use strict; plan(tests => 3); $ENV{'CGI_APP_RETURN_ONLY'} = 1; # 1..3 # view_pod { my $cgi = CGI->new({ rm => 'view_pod', }); my $app = MyBase::MyApp->new( QUERY => $cgi ); my $output = $app->run(); contains_string($output, q(
$code", ); } else { return qq(
$code); } } else { return _error( ($file ? "File $file " : "Module $module ") . "does not exist!"); } } sub _view_pod { my $self = shift; my $query = $self->query; # get the file to be viewed my $module = _module_name($query->param('module') || ref($self)); # change into file name my $file = _module_file_name($module); # make sure the file exists if( $file && -e $file ) { require Pod::Xhtml; my $pod_parser = new Pod::Xhtml( StringMode => 1, MakeIndex => 0, FragmentOnly => 1, TopLinks => 0, MakeMeta => 0, ); $pod_parser->parse_from_file($file); my $pod = $pod_parser->asString; # if we are under CGI::Application::Plugin::DevPopup then let's create this as a report instead if( $ENV{CAP_DEVPOPUP_EXEC} && !$query->param('view_code_no_popup') ) { $self->devpopup->add_report( title => 'View POD', summary => "View POD of $module", report => "
$pod", ); } else { return qq(
$pod); } } else { return _error( ($file ? "File $file " : "Module $module ") . "does not exist!"); } } sub _module_name { my $name = shift; $name =~ s/-/::/g; return $name; } sub _module_file_name { my $module = shift; # change into file name $module =~ s/::/\//g; $module .= '.pm'; return $INC{$module}; } sub _error { my $message = shift; return qq(
$message); } 1; __END__ =head1 SECURITY This plugin is designed to be used for development only. Please do not use it in a production system as it will allow anyone to see the source code for any loaded module. Consider yourself warned. =head1 AUTHOR Michael Peters, C<<