$EXPECTED_TESTS
$TODO
$Message
- $DiePattern
$WarnPattern
$BugId
$running_as_thread
sub must_die {
my ($code, $pattern, $name) = @_;
- $pattern //= $DiePattern
- or Carp::confess("Bad pattern");
+ Carp::confess("Bad pattern") unless $pattern;
undef $@;
ref $code ? &$code : eval $code;
my $r = $@ && $@ =~ /$pattern/;
- _ok $r, $name // $Message // "\$\@ =~ /$pattern/";
+ _ok $r, $name // "\$\@ =~ /$pattern/";
}
sub must_warn {
{
must_die 'q(a:[b]:) =~ /[x[:foo:]]/',
- 'POSIX class \[:[^:]+:\] unknown in regex',
+ qr/POSIX class \[:[^:]+:\] unknown in regex/,
'POSIX class [: :] must have valid name';
for my $d (qw [= .]) {
must_die "/[[${d}foo${d}]]/",
- "\QPOSIX syntax [$d $d] is reserved for future extensions",
+ qr/\QPOSIX syntax [$d $d] is reserved for future extensions/,
"POSIX syntax [[$d $d]] is an error";
}
}
}
- {
- local $DiePattern = '^Modification of a read-only value attempted';
- local $Message = 'Elements of @- and @+ are read-only';
- must_die '$+[0] = 13';
- must_die '$-[0] = 13';
- must_die '@+ = (7, 6, 5)';
- must_die '@- = qw (foo bar)';
+ foreach ('$+[0] = 13', '$-[0] = 13', '@+ = (7, 6, 5)', '@- = qw (foo bar)') {
+ must_die($_, qr/^Modification of a read-only value attempted/,
+ 'Elements of @- and @+ are read-only');
}