#!perl -w
use strict;
use Test::More;
use WWW::Mechanize::Firefox;
use URI::file;
use Cwd;
use File::Basename;
my %options = (
autodie => 0,
#log => [qw[debug]]
);
my $mech = eval {WWW::Mechanize::Firefox->new( %options )};
if (! $mech) {
my $err = $@;
plan skip_all => "Couldn't connect to MozRepl: $@";
exit
} else {
plan tests => 11;
};
undef $mech;
my @pages = qw(
49-mech-get-file.html
51-mech-sandbox.html
53-mech-capture-js-noerror.html
);
my @mech = map {;
WWW::Mechanize::Firefox->new( %options )
} @pages;
for my $mech (@mech) {
isa_ok $mech, 'WWW::Mechanize::Firefox';
};
for my $page (0..$#pages) {
$mech[ $page ]->get_local($pages[ $page ]);
};
for my $idx (0..$#mech) {
my $mech = $mech[$idx];
ok $mech->success;
like $mech->uri, qr!/\Q$pages[ $idx ]\E$!i, "We navigated to the right file";
};
# Check that our destructors get called:
my %destroyed = (
mech => 0,
repl => 0,
);
{ no warnings 'redefine';
my $old_repl = \&MozRepl::RemoteObject::DESTROY;
*MozRepl::RemoteObject::DESTROY = sub {
$destroyed{ repl }++;
goto &$old_repl;
};
my $old_mech = \&WWW::Mechanize::Firefox::DESTROY;
*WWW::Mechanize::Firefox::DESTROY = sub {
$destroyed{ mech }++;
goto &$old_mech;
};
};
@mech = ();
is $destroyed{ repl }, 0+@pages, "All three repl instances got released";
is $destroyed{ mech }, 0+@pages, "All three mech instances got released";