shell bypass 403
#!/usr/bin/perl -w
# vim: ts=2 sw=2 expandtab
# Tests error conditions. This has to be a separate test since it
# depends on ASSERT_DEFAULT being 0. All the other tests enable it.
use strict;
use lib qw(./mylib ../mylib);
sub POE::Kernel::ASSERT_DEFAULT () { 0 }
BEGIN {
package
POE::Kernel;
use constant TRACE_DEFAULT => exists($INC{'Devel/Cover.pm'});
}
# use Test::More;
print "1..0 # Skip most of these should move into other test files\n";
#use POSIX qw(:errno_h);
#use Socket;
#
#BEGIN {
# my @files_to_unuse = qw(
# POE/Kernel.pm
#
# POE/Loop/Event.pm
# POE/Loop/Gtk.pm
# POE/Loop/Poll.pm
# POE/Loop/Select.pm
# POE/Loop/Tk.pm
#
# POE/Loop/PerlSignals.pm
# POE/Loop/TkCommon.pm
# POE/Loop/TkActiveState.pm
#
# Event.pm Gtk.pm Tk.pm
# );
#
# # Clean up after destructive tests.
# sub test_cleanup {
# # Not used in POE::Kernel now.
#
# delete @INC{ @files_to_unuse };
# use Symbol qw(delete_package);
# delete_package("POE::Kernel");
# }
#
# # Test that errors occur when multiple event loops are enabled.
#
# if ($^O eq 'MSWin32' and not $ENV{POE_DANTIC}) {
# for (1..3) {
# print "ok $_ # skipped: This test crashes ActiveState Perl.\n";
# }
# }
# else {
# # Event + Tk
# @INC{'Event.pm', 'Tk.pm'} = (1,1);
# $Tk::VER .. SION = 800.021;
# stderr_pause();
# eval 'use POE::Kernel';
# stderr_resume();
# print 'not ' unless defined $@ and length $@;
# print "ok 1\n";
# test_cleanup();
#
# # Gtk + Tk
# @INC{'Gtk.pm', 'Tk.pm'} = (1, 1);
# $Tk::VER .. SION = 800.021;
# stderr_pause();
# eval 'use POE::Kernel';
# stderr_resume();
# print 'not ' unless defined $@ and length $@;
# print "ok 2\n";
# test_cleanup();
#
# # Event + Gtk
# @INC{'Event.pm', 'Gtk.pm'} = (1, 1);
# stderr_pause();
# eval 'use POE::Kernel';
# stderr_resume();
# print 'not ' unless defined $@ and length $@;
# print "ok 3\n";
# test_cleanup();
# }
#}
#
## Make these runtime so they occur after the above tests.
#
#use POE::Session;
#use POE::Kernel;
#use POE::Component::Server::TCP;
#use POE::Wheel::SocketFactory;
#
## Test that errors occur when nonexistent modules are used.
#stderr_pause();
#eval 'use POE qw(NonExistent);';
#stderr_resume();
#print "not " unless defined $@ and length $@;
#print "ok 4\n";
#
## Test that an error occurs when trying to instantiate POE directly.
#eval 'my $x = new POE;';
#print "not " unless defined $@ and length $@;
#print "ok 5\n";
#
#### Test state machine.
#
#sub test_start {
# my ($kernel, $session, $heap) = @_[KERNEL, SESSION, HEAP];
#
# ### Aliases.
#
# # Test error handling for the Kernel's call() method.
# $! = 0;
# print "not "
# if defined $kernel->call( 1000 => 'nonexistent' ) or $! != ESRCH;
# print "ok 8\n";
#
# # Test error handling for the Kernel's post() method.
# $! = 0;
# print "not "
# if defined $kernel->post( 1000 => 'nonexistent' ) or $! != ESRCH;
# print "ok 9\n";
#
# # Failed alias addition.
# print "not " if $kernel->alias_set( 'kernel_alias' ) != EEXIST;
# print "ok 10\n";
#
# # Failed alias removal. Not allowed to remove one from another
# # session.
# print "not " if $kernel->alias_remove( 'kernel_alias' ) != EPERM;
# print "ok 11\n";
#
# # Failed alias removal. Not allowed to remove one that doesn't
# # exist.
# print "not " if $kernel->alias_remove( 'yatta yatta yatta' ) != ESRCH;
# print "ok 12\n";
#
# ### IDs
#
# # Test failed ID->session and session->ID lookups.
# $! = 0;
# print "not " if defined $kernel->ID_id_to_session( 1000 ) or $! != ESRCH;
# print "ok 13\n";
#
# print "not " if defined $kernel->ID_session_to_id( 1000 ) or $! != ESRCH;
# print "ok 14\n";
#
# ### Signals.
#
# # Test failed signal() call.
# $! = 0;
# print "not " if defined $kernel->signal( 1000 => 'BOOGA' ) or $! != ESRCH;
# print "ok 15\n";
#
# ### Extra references.
# $! = 0;
# print 'not ' if defined $kernel->refcount_increment( 'tag' ) or $! != ESRCH;
# print "ok 16\n";
#
# $! = 0;
# print 'not ' if defined $kernel->refcount_decrement( 'tag' ) or $! != ESRCH;
# print "ok 17\n";
#}
#
## Did we get this far?
#
#print "ok 6\n";
#
#print "not " if $POE::Kernel::poe_kernel->alias_set( 'kernel_alias' );
#print "ok 7\n";
#
#POE::Session->create
# ( inline_states =>
# { _start => \&test_start,
# }
# );
#
#print "not " if $POE::Kernel::poe_kernel->alias_remove( 'kernel_alias' );
#print "ok 18\n";
#
#print "not "
# unless $POE::Kernel::poe_kernel->state( woobly => sub { die } ) == ESRCH;
#print "ok 19\n";
#
#### TCP Server problems.
#
#{ my $warnings = 0;
# local $SIG{__WARN__} = sub { $warnings++; };
#
# POE::Component::Server::TCP->new
# ( Port => -1,
# Acceptor => sub { die },
# Nonexistent => 'woobly',
# );
#
# print "not " unless $warnings == 1;
# print "ok 20\n";
#}
#
#### SocketFactory problems.
#
#{ my $warnings = 0;
# local $SIG{__WARN__} = sub { $warnings++; };
#
# # Grar! No UNIX sockets on Windows.
# if ($^O eq 'MSWin32' and not $ENV{POE_DANTIC}) {
# print "ok 21 # skipped: $^O does not support listen on unbound sockets.\n";
# print "ok 22 # skipped: $^O does not support UNIX sockets.\n";
# }
# else {
# # Odd parameters.
#
# # Cygwin behaves differently.
# if ($^O eq "cygwin") {
# print
# "ok 21 # skipped: $^O does not support listen on unbound sockets.\n";
# }
# else {
# POE::Wheel::SocketFactory->new
# ( SuccessEvent => [ ],
# FailureEvent => [ ],
# );
#
# print "not " unless $warnings == 2;
# print "ok 21\n";
# }
#
# # Any protocol on UNIX sockets.
# $warnings = 0;
# POE::Wheel::SocketFactory->new
# ( SocketDomain => AF_UNIX,
# SocketProtocol => "tcp",
# SuccessEvent => "okay",
# FailureEvent => "okay",
# );
#
# print "not " unless $warnings == 1;
# print "ok 22\n";
# }
#
# # Unsupported protocol for an address family.
# eval( 'POE::Wheel::SocketFactory->new ' .
# '( SocketDomain => AF_INET,' .
# ' SocketProtocol => "icmp",' .
# ' SuccessEvent => "okay",' .
# ' FailureEvent => "okay",' .
# ');'
# );
# print 'not ' unless defined $@ and length $@;
# print "ok 23\n";
#}
#
#### Main loop.
#
#stderr_pause();
#$POE::Kernel::poe_kernel->run();
#stderr_resume();
#
#### Misuse of unusable modules.
#
#use POE::Wheel;
#
#eval 'POE::Wheel->new';
#print 'not ' unless defined $@ and length $@;
#print "ok 24\n";
#
#use POE::Component;
#
#eval 'POE::Component->new';
#print 'not ' unless defined $@ and length $@;
#print "ok 25\n";
#
#use POE::Driver;
#
#eval 'POE::Driver->new';
#print 'not ' unless defined $@ and length $@;
#print "ok 26\n";
#
#use POE::Filter;
#
#eval 'POE::Filter->new';
#print 'not ' unless defined $@ and length $@;
#print "ok 27\n";
#
#### Misuse of usable modules.
#
#use POE::Driver::SysRW;
#
#eval 'POE::Driver::SysRW->new( 1 )';
#print 'not ' unless defined $@ and length $@;
#print "ok 28\n";
#
#eval 'POE::Driver::SysRW->new( Booga => 1 )';
#print 'not ' unless defined $@ and length $@;
#print "ok 29\n";
#
#eval 'use POE::Filter::HTTPD;';
#unless (defined $@ and length $@) {
# my $pfhttpd = POE::Filter::HTTPD->new();
#
# eval '$pfhttpd->get_pending()';
# print 'not ' unless defined $@ and length $@;
# print "ok 30\n";
#}
#else {
# print "ok 30 # skipped: libwww-perl and URI are needed for this test.\n";
#}
#
## POE::Session constructor stuff.
#
#eval 'POE::Session->create( 1 )';
#print 'not ' unless defined $@ and length $@;
#print "ok 31\n";
#
#eval 'POE::Session->create( options => [] )';
#print 'not ' unless defined $@ and length $@;
#print "ok 32\n";
#
#eval 'POE::Session->create( inline_states => [] )';
#print 'not ' unless defined $@ and length $@;
#print "ok 33\n";
#
#eval 'POE::Session->create( inline_states => { _start => 1 } )';
#print 'not ' unless defined $@ and length $@;
#print "ok 34\n";
#
#eval 'POE::Session->create( package_states => {} )';
#print 'not ' unless defined $@ and length $@;
#print "ok 35\n";
#
#eval 'POE::Session->create( package_states => [ 1 ] )';
#print 'not ' unless defined $@ and length $@;
#print "ok 36\n";
#
#eval 'POE::Session->create( package_states => [ main => 1 ] )';
#print 'not ' unless defined $@ and length $@;
#print "ok 37\n";
#
#eval 'POE::Session->create( object_states => {} )';
#print 'not ' unless defined $@ and length $@;
#print "ok 38\n";
#
#eval 'POE::Session->create( object_states => [ 1 ] )';
#print 'not ' unless defined $@ and length $@;
#print "ok 39\n";
#
#eval 'POE::Session->create( package_states => [ main => 1 ] )';
#print 'not ' unless defined $@ and length $@;
#print "ok 40\n";
#
#eval 'POE::Session->new( 1 )'; ### DEPRECATED
#print 'not ' unless defined $@ and length $@;
#print "ok 41\n";
#
#eval 'POE::Session->new( _start => 1 )';
#print 'not ' unless defined $@ and length $@;
#print "ok 42\n";
#
#eval 'POE::Session->new( sub {} => 1 )';
#print 'not ' unless defined $@ and length $@;
#print "ok 43\n";
#
#use POE::Wheel::FollowTail;
#use POE::Filter::Stream;
#
#eval 'POE::Wheel::FollowTail->new( )';
#print 'not ' unless defined $@ and length $@;
#print "ok 44\n";
#
#eval 'POE::Wheel::FollowTail->new( Handle => \*STDIN )';
#print 'not ' unless defined $@ and length $@;
#print "ok 45\n";
#
#eval( 'POE::Wheel::FollowTail->new( Handle => \*STDIN,' .
# ' Driver => POE::Driver::SysRW->new(),' .
# ')'
# );
#print 'not ' unless defined $@ and length $@;
#print "ok 46\n";
#
#eval( 'POE::Wheel::FollowTail->new( Handle => \*STDIN,' .
# ' Driver => POE::Driver::SysRW->new(),' .
# ' Filter => POE::Filter::Stream->new(),' .
# ')'
# );
#print 'not ' unless defined $@ and length $@;
#print "ok 47\n";
#
#if (($^O ne 'MSWin32' and $^O ne 'MacOS') or $ENV{POE_DANTIC}) {
# require POE::Wheel::Run;
# POE::Wheel::Run->import();
#
# eval 'POE::Wheel::Run->new( 1 )';
# print 'not ' unless defined $@ and length $@;
# print "ok 48\n";
#
# eval 'POE::Wheel::Run->new( Program => 1 )';
# print 'not ' unless defined $@ and length $@;
# print "ok 49\n";
#}
#else {
# for (48..49) {
# print "ok $_ # skipped: $^O does not support POE::Wheel::Run.\n";
# }
#}
1;