|
Packit |
8df772 |
# $Id: 07magic.t,v 1.8 2007/04/20 05:40:48 ray Exp $
|
|
Packit |
8df772 |
|
|
Packit |
8df772 |
use strict;
|
|
Packit |
8df772 |
|
|
Packit |
8df772 |
use Clone;
|
|
Packit |
8df772 |
use Test::More tests => 3;
|
|
Packit |
8df772 |
|
|
Packit |
8df772 |
SKIP: {
|
|
Packit |
8df772 |
eval "use Data::Dumper";
|
|
Packit |
8df772 |
skip "Data::Dumper not installed", 1 if $@;
|
|
Packit |
8df772 |
|
|
Packit |
8df772 |
SKIP: {
|
|
Packit |
8df772 |
eval "use Scalar::Util qw( weaken )";
|
|
Packit |
8df772 |
skip "Scalar::Util not installed", 1 if $@;
|
|
Packit |
8df772 |
|
|
Packit |
8df772 |
my $x = { a => "worked\n" };
|
|
Packit |
8df772 |
my $y = $x;
|
|
Packit |
8df772 |
weaken($y);
|
|
Packit |
8df772 |
my $z = Clone::clone($x);
|
|
Packit |
8df772 |
ok( Dumper($x) eq Dumper($z), "Cloned weak reference");
|
|
Packit |
8df772 |
}
|
|
Packit |
8df772 |
|
|
Packit |
8df772 |
## RT 21859: Clone segfault (isolated example)
|
|
Packit |
8df772 |
SKIP: {
|
|
Packit |
8df772 |
my $string = "HDDR-WD-250JS";
|
|
Packit |
8df772 |
eval {
|
|
Packit |
8df772 |
use utf8;
|
|
Packit |
8df772 |
utf8::upgrade($string);
|
|
Packit |
8df772 |
};
|
|
Packit |
8df772 |
skip $@, 1 if $@;
|
|
Packit |
8df772 |
$string = sprintf ('<<bg_color=%s>>%s<</bg_color>>%s',
|
|
Packit |
8df772 |
'#EA0',
|
|
Packit |
8df772 |
substr ($string, 0, 4),
|
|
Packit |
8df772 |
substr ($string, 4),
|
|
Packit |
8df772 |
);
|
|
Packit |
8df772 |
my $z = Clone::clone($string);
|
|
Packit |
8df772 |
ok( Dumper($string) eq Dumper($z), "Cloned magic utf8");
|
|
Packit |
8df772 |
}
|
|
Packit |
8df772 |
}
|
|
Packit |
8df772 |
|
|
Packit |
8df772 |
SKIP: {
|
|
Packit |
8df772 |
eval "use Taint::Runtime qw(enable taint_env)";
|
|
Packit |
8df772 |
skip "Taint::Runtime not installed", 1 if $@;
|
|
Packit |
8df772 |
taint_env();
|
|
Packit |
8df772 |
my $x = "";
|
|
Packit |
8df772 |
for (keys %ENV)
|
|
Packit |
8df772 |
{
|
|
Packit |
8df772 |
$x = $ENV{$_};
|
|
Packit |
8df772 |
last if ( $x && length($x) > 0 );
|
|
Packit |
8df772 |
}
|
|
Packit |
8df772 |
my $y = Clone::clone($x);
|
|
Packit |
8df772 |
## ok(Clone::clone($tainted), "Tainted input");
|
|
Packit |
8df772 |
ok( Dumper($x) eq Dumper($y), "Tainted input");
|
|
Packit |
8df772 |
}
|
|
Packit |
8df772 |
|