#!/usr/bin/perl
#
# Usage: "perl -I./lib litmus.pl > litmus.new; diff litmus.out litmus.new
#
use File::Temp;
use HTTP::Daemon;
use Net::DAV::Server;
use Filesys::Virtual::Plain;
# Set up Filesystem
my $tempdir = File::Temp::tempdir(CLEANUP => 1);
my $filesys = Filesys::Virtual::Plain->new({root_path => $tempdir});
my $webdav = Net::DAV::Server->new();
$webdav->filesys($filesys);
# Set up Server
my $d = HTTP::Daemon->new(
LocalAddr => 'localhost',
LocalPort => 4242,
ReuseAddr => 1) || die;
# Run litmus against it
if (my $pid = fork()) {
system("litmus", $d->url());
kill 9, $pid;
exit 0;
}
# and do the requests...
else {
while (my $c = $d->accept) {
while (my $request = $c->get_request) {
my $response = $webdav->run($request);
$c->send_response ($response);
$c->close;
}
undef($c);
}
}
syntax highlighted by Code2HTML, v. 0.9.1