#!perl
use IO::Handle;
use Getopt::Long;
use FindBin;
use lib "$FindBin::Bin/lib";
autoflush STDOUT 1;
my %opt = ( exitval => 0 );
eval {
local $SIG{__WARN__} = sub { die $_[0] };
GetOptions(
\%opt,
qw[
config=s
cmdserver=s
mode=s
exitval=i
R=s
]
);
};
die if $@;
shift @ARGV if $ARGV[0] eq 'serve';
sub fail { die("failed\n") }
sub eof { exit 0 }
sub bad_hello_chan {
require BadServer;
BadServer::Hello::Chan->new->serve;
}
sub bad_hello_len {
require BadServer;
BadServer::Hello::Len->new->serve;
}
sub bad_hello_no_capabilities {
require BadServer;
BadServer::NoCapabilities->new->serve;
}
sub bad_hello_no_runcommand {
require BadServer;
BadServer::NoRunCommand->new->serve;
}
sub bad_hello_no_encoding {
require BadServer;
BadServer::NoEncoding->new->serve;
}
sub bad_bad_encoding {
require BadServer;
BadServer::BadEncoding->new->serve;
}
sub fail_with_stderr {
require BadServer;
BadServer::FailWithStderr->new->serve;
}
sub exit_with_stderr {
require BadServer;
BadServer::ExitWithStderr->new->serve;
}
sub badlen {
print pack( 'A[1] l> A[2]', 'o', 3, 'aa' );
<STDIN>;
}
sub wait {
<STDIN>;
}
sub basic {
require Server::Basic;
Server::Basic->new->serve;
}
sub full {
require Server::Full;
Server::Full->new->serve;
}
$_->() foreach @ARGV;
exit $opt{exitval};