The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use IO::Handle;

eval "use Test::WWW::Mechanize";
if($@) {
  plan skip_all => 'Test::WWW::Mechanize not installed';
  exit;
}

sub start_proggie {
  my ($filename) = @_;
  *STDERR = *STDOUT;
  my $kid_pid = open(my $kid_out, '-|');
  die "Unable to fork!" unless defined($kid_pid);
  if($kid_pid) {
    $kid_out->autoflush;
    return ($kid_out, $kid_pid);
  } else {
    if(-e $filename) {
      do $filename or die "Unable to eval $filename! $@";
    } else {
      die "I can't find '$filename'!";
    }
    exit;
  }
}

sub get_proggie_server_ok {
  my ($kid_out) = @_;
  my $server = <$kid_out>;
  chomp $server;
  if($server =~ /^Please contact me at: http:\/\/[^:]+:(\d+)/) {
    $server = "http://localhost:$1/";
    pass("Server started");
  } else {
    fail("Server started");
    die;
  }
  return $server;
}

1;