1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
#!/opt/perl58/bin/perl -w
use Test::More 'no_plan';
package Catch;
sub TIEHANDLE {
my($class, $var) = @_;
return bless { var => $var }, $class;
}
sub PRINT {
my($self) = shift;
${'main::'.$self->{var}} .= join '', @_;
}
sub OPEN {} # XXX Hackery in case the user redirects
sub CLOSE {} # XXX STDERR/STDOUT. This is not the behavior we want.
sub READ {}
sub READLINE {}
sub GETC {}
sub BINMODE {}
my $Original_File = 'lib/WWW/Mechanize/FormFiller/Value/Random.pm';
package main;
# pre-5.8.0's warns aren't caught by a tied STDERR.
$SIG{__WARN__} = sub { $main::_STDERR_ .= join '', @_; };
tie *STDOUT, 'Catch', '_STDOUT_' or die $!;
tie *STDERR, 'Catch', '_STDERR_' or die $!;
SKIP: {
# A header testing whether we find all prerequisites :
# Check for module WWW::Mechanize::FormFiller
eval { require WWW::Mechanize::FormFiller };
skip "Need module WWW::Mechanize::FormFiller to run this test", 1
if $@;
# Check for module WWW::Mechanize::FormFiller::Value::Random
eval { require WWW::Mechanize::FormFiller::Value::Random };
skip "Need module WWW::Mechanize::FormFiller::Value::Random to run this test", 1
if $@;
# The original POD test
undef $main::_STDOUT_;
undef $main::_STDERR_;
eval q{
my $example = sub {
local $^W = 0;
#line 40 lib/WWW/Mechanize/FormFiller/Value/Random.pm
use WWW::Mechanize::FormFiller;
use WWW::Mechanize::FormFiller::Value::Random;
my $f = WWW::Mechanize::FormFiller->new();
# Create a random value for the HTML field "login"
my $login = WWW::Mechanize::FormFiller::Value::Random->new( login => "root","administrator","corion" );
$f->add_value( login => $login );
# Alternatively take the following shorthand, which adds the
# field to the list as well :
# If there is no password, put a random one out of the list there
my $password = $f->add_filler( password => Random => "foo","bar","baz" );
;
}
};
is($@, '', "example from line 40");
};
SKIP: {
# A header testing whether we find all prerequisites :
# Check for module HTML::Form
eval { require HTML::Form };
skip "Need module HTML::Form to run this test", 1
if $@;
# Check for module WWW::Mechanize::FormFiller
eval { require WWW::Mechanize::FormFiller };
skip "Need module WWW::Mechanize::FormFiller to run this test", 1
if $@;
# Check for module WWW::Mechanize::FormFiller::Value::Random
eval { require WWW::Mechanize::FormFiller::Value::Random };
skip "Need module WWW::Mechanize::FormFiller::Value::Random to run this test", 1
if $@;
# The original POD test
{
undef $main::_STDOUT_;
undef $main::_STDERR_;
#line 40 lib/WWW/Mechanize/FormFiller/Value/Random.pm
use WWW::Mechanize::FormFiller;
use WWW::Mechanize::FormFiller::Value::Random;
my $f = WWW::Mechanize::FormFiller->new();
# Create a random value for the HTML field "login"
my $login = WWW::Mechanize::FormFiller::Value::Random->new( login => "root","administrator","corion" );
$f->add_value( login => $login );
# Alternatively take the following shorthand, which adds the
# field to the list as well :
# If there is no password, put a random one out of the list there
my $password = $f->add_filler( password => Random => "foo","bar","baz" );
require HTML::Form;
my $form = HTML::Form->parse('<html><body><form method=get action=/>
<input type=text name=login />
<input type=text name=password />
</form></body></html>','http://www.example.com/');
$f->fill_form($form);
like( $form->value('login'), qr/^(root|administrator|corion)$/, "Login gets set");
like( $form->value('password'), qr/^(foo|bar|baz)$/, "Password gets set");
undef $main::_STDOUT_;
undef $main::_STDERR_;
}
};
SKIP: {
# A header testing whether we find all prerequisites :
# The original POD test
undef $main::_STDOUT_;
undef $main::_STDERR_;
};
|