The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;

use lib qw(lib t/lib);
use Vim::Debug::Client;
use Vim::Debug::Daemon;
use Test::More;
$|=1;

$SIG{INT} = \&signalHandler;
sub signalHandler { exit } # die when children die

my $testFile = 't/perl.stop.pl';
my $r;
my $firstLine;

my $pid1 = fork;
if (!$pid1) { # child process
    Vim::Debug::Daemon->new->run;
    exit;
}

my $pid2 = fork;
if (!$pid2) { # child process

    sleep 3;
    my $client2 = Vim::Debug::Client->new({
        language => 'Perl',
        dbgrCmd  => "perl -Ilib -d $testFile",
    });

    $r = $client2->stop;
    exit;
}

my $client1 = Vim::Debug::Client->new({
    language => 'Perl',
    dbgrCmd  => "perl -Ilib -d $testFile",
});

$r = $client1->start;
$firstLine = $r->line;
ok($firstLine, "connected: line number");
is($r->file, $testFile, "connected: file");

$r = $client1->cont;
ok($r->line, "continue: line number");
ok($r->file, "continue: file");

$r = $client1->next;
is($r->file, $testFile, "next: file");

$r = $client1->restart;
is($r->line, $firstLine, "continue: line number");
is($r->file, $testFile,  "continue: file");

$r = $client1->quit;


done_testing;