Change 33133 by [EMAIL PROTECTED] on 2008/01/30 18:46:51
Integrate:
[ 32724]
A test for upgrading scalars. Curiously, before this, lib/Math/Trig.t
was the only code anywhere in the build or testsuite that upgraded an
NV to an RV.
[ 32726]
Use print rather than diag(), as these routine messages shouldn't be
going to STDERR.
[ 32746]
Localize $\ before changing it, so as not to affect print statements in
the rest of the test.
[ 32747]
Proper $TODO support in &ok() and &iseq() in pat.t
[ 32749]
Better diagnostics for the tests for #20683.
[ 32801]
Subject: [PATCH] shield t/test.pl functions from global print modifiers
From: Michael G Schwern <[EMAIL PROTECTED]>
Date: Tue, 01 Jan 2008 18:12:36 -0800
Message-ID: <[EMAIL PROTECTED]>
[ 32839]
Protect me (and my fellow muppets) from screens of "syntax errors" if
one accidentally feeds embed.fnc or t/op/re_tests to the perl
interpreter.
[ 32842]
Make ext/re/t/re_funcs.t warnings clean.
[ 32856]
$Test::Harness::Verbose is a numeric value now so assigning -v to it
isnt all that helpful.
[ 32897]
Subject: [PATCH] ARRAY(0x...) is not very helpful in sprintf.t
diagnostics
Message-ID: <[EMAIL PROTECTED]>
From: "Yitzchak Scott-Thoennes" <[EMAIL PROTECTED]>
Date: Mon, 7 Jan 2008 23:24:01 -0800 (PST)
[ 32930]
grep the MANIFEST to avoid having hard coded numbers in readdir.t
[ 32988]
Generate the warnings masks programatically.
Get the correct line number when reporting errors from &check_bits.
[ 32995]
New tests for new ops. Most of them are TODO
[ 33058]
Subject: [PATCH t/cmd/for.t] Regression tests for 'for reverse ..'
From: Abigail <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>
Date: Wed, 23 Jan 2008 23:53:25 +0100
[ 33087]
Test that lc, uc, etc on undef return ""
Affected files ...
... //depot/maint-5.10/perl/MANIFEST#9 integrate
... //depot/maint-5.10/perl/embed.fnc#3 integrate
... //depot/maint-5.10/perl/ext/Safe/t/safeops.t#2 integrate
... //depot/maint-5.10/perl/ext/re/t/re_funcs.t#2 integrate
... //depot/maint-5.10/perl/t/cmd/for.t#2 integrate
... //depot/maint-5.10/perl/t/harness#2 integrate
... //depot/maint-5.10/perl/t/op/caller.t#2 integrate
... //depot/maint-5.10/perl/t/op/lc.t#2 integrate
... //depot/maint-5.10/perl/t/op/pat.t#3 integrate
... //depot/maint-5.10/perl/t/op/re_tests#2 integrate
... //depot/maint-5.10/perl/t/op/readdir.t#2 integrate
... //depot/maint-5.10/perl/t/op/regexp.t#2 integrate
... //depot/maint-5.10/perl/t/op/sprintf.t#2 integrate
... //depot/maint-5.10/perl/t/op/upgrade.t#1 branch
... //depot/maint-5.10/perl/t/test.pl#2 integrate
Differences ...
==== //depot/maint-5.10/perl/MANIFEST#9 (text) ====
Index: perl/MANIFEST
--- perl/MANIFEST#8~33132~ 2008-01-30 10:18:00.000000000 -0800
+++ perl/MANIFEST 2008-01-30 10:46:51.000000000 -0800
@@ -3850,6 +3850,7 @@
t/op/undef.t See if undef works
t/op/universal.t See if UNIVERSAL class works
t/op/unshift.t See if unshift works
+t/op/upgrade.t See if upgrading and assigning scalars works
t/op/utf8decode.t See if UTF-8 decoding works
t/op/utfhash.t See if utf8 keys in hashes behave
t/op/utftaint.t See if utf8 and taint work together
==== //depot/maint-5.10/perl/embed.fnc#3 (text) ====
Index: perl/embed.fnc
--- perl/embed.fnc#2~33123~ 2008-01-30 03:45:08.000000000 -0800
+++ perl/embed.fnc 2008-01-30 10:46:51.000000000 -0800
@@ -1,3 +1,5 @@
+: BEGIN {die "You meant to run embed.pl"} # Stop early if fed to perl.
+:
: Lines are of the form:
: flags|return_type|function_name|arg1|arg2|...|argN
:
==== //depot/maint-5.10/perl/ext/Safe/t/safeops.t#2 (text) ====
Index: perl/ext/Safe/t/safeops.t
--- perl/ext/Safe/t/safeops.t#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/ext/Safe/t/safeops.t 2008-01-30 10:46:51.000000000 -0800
@@ -49,7 +49,7 @@
sub testop {
my ($op, $opname, $code) = @_;
pass("$op : skipped") and return if $code =~ /^SKIP/;
- pass("$op : skipped") and return if $code =~ m://: && $] < 5.009; # no dor
+ pass("$op : skipped") and return if $code =~ m://|~~: && $] < 5.010;
my $c = new Safe;
$c->deny_only($op);
$c->reval($code);
@@ -423,4 +423,10 @@
method_named $x->y()
dor $x // $y
dorassign $x //= $y
+once SKIP {use feature 'state'; state $foo = 42;}
+say SKIP {use feature 'say'; say "foo";}
+smartmatch $x ~~ $y
+aeach SKIP each @t
+akeys SKIP keys @t
+avalues SKIP values @t
custom SKIP (no way)
==== //depot/maint-5.10/perl/ext/re/t/re_funcs.t#2 (text) ====
Index: perl/ext/re/t/re_funcs.t
--- perl/ext/re/t/re_funcs.t#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/ext/re/t/re_funcs.t 2008-01-30 10:46:51.000000000 -0800
@@ -11,6 +11,7 @@
}
use strict;
+use warnings;
use Test::More; # test count at bottom of file
use re qw(is_regexp regexp_pattern regmust
@@ -42,7 +43,7 @@
if ('1234'=~/(?:(?<A>\d)|(?<C>!))(?<B>\d)(?<A>\d)(?<B>\d)/){
my @names = sort +regnames();
is("@names","A B","regnames");
- my @names = sort +regnames(0);
+ @names = sort +regnames(0);
is("@names","A B","regnames");
my $names = regnames();
is($names, "B", "regnames in scalar context");
==== //depot/maint-5.10/perl/t/cmd/for.t#2 (xtext) ====
Index: perl/t/cmd/for.t
--- perl/t/cmd/for.t#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/t/cmd/for.t 2008-01-30 10:46:51.000000000 -0800
@@ -1,6 +1,6 @@
#!./perl
-print "1..80\n";
+print "1..118\n";
for ($i = 0; $i <= 10; $i++) {
$x[$i] = $i;
@@ -129,6 +129,16 @@
$r .= $_;
}
is ($r, '123', 'Forwards for list via map');
+$r = '';
+for (1 .. 3) {
+ $r .= $_;
+}
+is ($r, '123', 'Forwards for list via ..');
+$r = '';
+for ('A' .. 'C') {
+ $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for list via ..');
$r = '';
for (reverse @array) {
@@ -150,6 +160,16 @@
$r .= $_;
}
is ($r, '321', 'Reverse for list via map');
+$r = '';
+for (reverse 1 .. 3) {
+ $r .= $_;
+}
+is ($r, '321', 'Reverse for list via ..');
+$r = '';
+for (reverse 'A' .. 'C') {
+ $r .= $_;
+}
+is ($r, 'CBA', 'Reverse orwards for list via ..');
$r = '';
for my $i (@array) {
@@ -171,6 +191,16 @@
$r .= $i;
}
is ($r, '123', 'Forwards for list via map with var');
+$r = '';
+for my $i (1 .. 3) {
+ $r .= $i;
+}
+is ($r, '123', 'Forwards for list via .. with var');
+$r = '';
+for my $i ('A' .. 'C') {
+ $r .= $i;
+}
+is ($r, 'ABC', 'Forwards for list via .. with var');
$r = '';
for my $i (reverse @array) {
@@ -192,6 +222,16 @@
$r .= $i;
}
is ($r, '321', 'Reverse for list via map with var');
+$r = '';
+for my $i (reverse 1 .. 3) {
+ $r .= $i;
+}
+is ($r, '321', 'Reverse for list via .. with var');
+$r = '';
+for my $i (reverse 'A' .. 'C') {
+ $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for list via .. with var');
# For some reason the generate optree is different when $_ is implicit.
$r = '';
@@ -214,6 +254,16 @@
$r .= $_;
}
is ($r, '123', 'Forwards for list via map with explicit $_');
+$r = '';
+for $_ (1 .. 3) {
+ $r .= $_;
+}
+is ($r, '123', 'Forwards for list via .. with var with explicit $_');
+$r = '';
+for $_ ('A' .. 'C') {
+ $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for list via .. with var with explicit $_');
$r = '';
for $_ (reverse @array) {
@@ -235,6 +285,16 @@
$r .= $_;
}
is ($r, '321', 'Reverse for list via map with explicit $_');
+$r = '';
+for $_ (reverse 1 .. 3) {
+ $r .= $_;
+}
+is ($r, '321', 'Reverse for list via .. with var with explicit $_');
+$r = '';
+for $_ (reverse 'A' .. 'C') {
+ $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for list via .. with var with explicit $_');
# I don't think that my is that different from our in the optree. But test a
# few:
@@ -258,6 +318,16 @@
$r .= $i;
}
is ($r, '321', 'Reverse for list via map with our var');
+$r = '';
+for our $i (reverse 1 .. 3) {
+ $r .= $i;
+}
+is ($r, '321', 'Reverse for list via .. with our var');
+$r = '';
+for our $i (reverse 'A' .. 'C') {
+ $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for list via .. with our var');
$r = '';
@@ -280,6 +350,16 @@
$r .= $_;
}
is ($r, 'A321', 'Reverse for list via map with leading value');
+$r = '';
+for ('A', reverse 1 .. 3) {
+ $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list via .. with leading value');
+$r = '';
+for (1, reverse 'A' .. 'C') {
+ $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for list via .. with leading value');
$r = '';
for (reverse (@array), 1) {
@@ -301,6 +381,16 @@
$r .= $_;
}
is ($r, '321A', 'Reverse for list via map with trailing value');
+$r = '';
+for (reverse (1 .. 3), 'A') {
+ $r .= $_;
+}
+is ($r, '321A', 'Reverse for list via .. with trailing value');
+$r = '';
+for (reverse ('A' .. 'C'), 1) {
+ $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for list via .. with trailing value');
$r = '';
@@ -324,6 +414,16 @@
$r .= $_;
}
is ($r, 'A321', 'Reverse for list via map with leading value with explicit
$_');
+$r = '';
+for $_ ('A', reverse 1 .. 3) {
+ $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list via .. with leading value with explicit $_');
+$r = '';
+for $_ (1, reverse 'A' .. 'C') {
+ $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for list via .. with leading value with explicit $_');
$r = '';
for $_ (reverse (@array), 1) {
@@ -347,6 +447,16 @@
}
is ($r, '321A',
'Reverse for list via map with trailing value with explicit $_');
+$r = '';
+for $_ (reverse (1 .. 3), 'A') {
+ $r .= $_;
+}
+is ($r, '321A', 'Reverse for list via .. with trailing value with explicit
$_');
+$r = '';
+for $_ (reverse ('A' .. 'C'), 1) {
+ $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for list via .. with trailing value with explicit
$_');
$r = '';
for my $i (1, reverse @array) {
@@ -368,6 +478,16 @@
$r .= $i;
}
is ($r, 'A321', 'Reverse for list via map with leading value and var');
+$r = '';
+for my $i ('A', reverse 1 .. 3) {
+ $r .= $i;
+}
+is ($r, 'A321', 'Reverse for list via .. with leading value and var');
+$r = '';
+for my $i (1, reverse 'A' .. 'C') {
+ $r .= $i;
+}
+is ($r, '1CBA', 'Reverse for list via .. with leading value and var');
$r = '';
for my $i (reverse (@array), 1) {
@@ -389,6 +509,16 @@
$r .= $i;
}
is ($r, '321A', 'Reverse for list via map with trailing value and var');
+$r = '';
+for my $i (reverse (1 .. 3), 'A') {
+ $r .= $i;
+}
+is ($r, '321A', 'Reverse for list via .. with trailing value and var');
+$r = '';
+for my $i (reverse ('A' .. 'C'), 1) {
+ $r .= $i;
+}
+is ($r, 'CBA1', 'Reverse for list via .. with trailing value and var');
$r = '';
@@ -401,6 +531,26 @@
$r .= $_;
}
is ($r, 'CBA1', 'Reverse for value and array via map');
+$r = '';
+for (reverse 1 .. 3, @array) {
+ $r .= $_;
+}
+is ($r, 'CBA321', 'Reverse for .. and array');
+$r = '';
+for (reverse 'X' .. 'Z', @array) {
+ $r .= $_;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array');
+$r = '';
+for (reverse map {$_} 1 .. 3, @array) {
+ $r .= $_;
+}
+is ($r, 'CBA321', 'Reverse for .. and array via map');
+$r = '';
+for (reverse map {$_} 'X' .. 'Z', @array) {
+ $r .= $_;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array via map');
$r = '';
for (reverse (@array, 1)) {
@@ -423,6 +573,26 @@
$r .= $_;
}
is ($r, 'CBA1', 'Reverse for value and array via map with explicit $_');
+$r = '';
+for $_ (reverse 1 .. 3, @array) {
+ $r .= $_;
+}
+is ($r, 'CBA321', 'Reverse for .. and array with explicit $_');
+$r = '';
+for $_ (reverse 'X' .. 'Z', @array) {
+ $r .= $_;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array with explicit $_');
+$r = '';
+for $_ (reverse map {$_} 1 .. 3, @array) {
+ $r .= $_;
+}
+is ($r, 'CBA321', 'Reverse for .. and array via map with explicit $_');
+$r = '';
+for $_ (reverse map {$_} 'X' .. 'Z', @array) {
+ $r .= $_;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array via map with explicit $_');
$r = '';
for $_ (reverse (@array, 1)) {
@@ -446,6 +616,26 @@
$r .= $i;
}
is ($r, 'CBA1', 'Reverse for value and array via map with var');
+$r = '';
+for my $i (reverse 1 .. 3, @array) {
+ $r .= $i;
+}
+is ($r, 'CBA321', 'Reverse for .. and array with var');
+$r = '';
+for my $i (reverse 'X' .. 'Z', @array) {
+ $r .= $i;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array with var');
+$r = '';
+for my $i (reverse map {$_} 1 .. 3, @array) {
+ $r .= $i;
+}
+is ($r, 'CBA321', 'Reverse for .. and array via map with var');
+$r = '';
+for my $i (reverse map {$_} 'X' .. 'Z', @array) {
+ $r .= $i;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array via map with var');
$r = '';
for my $i (reverse (@array, 1)) {
==== //depot/maint-5.10/perl/t/harness#2 (text) ====
Index: perl/t/harness
--- perl/t/harness#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/t/harness 2008-01-30 10:46:51.000000000 -0800
@@ -14,7 +14,7 @@
use Test::Harness;
$Test::Harness::switches = ""; # Too much noise otherwise
-$Test::Harness::verbose = shift if @ARGV && $ARGV[0] eq '-v';
+$Test::Harness::Verbose++ while @ARGV && $ARGV[0] eq '-v' && shift;
if ($ARGV[0] && $ARGV[0] eq '-torture') {
shift;
==== //depot/maint-5.10/perl/t/op/caller.t#2 (text) ====
Index: perl/t/op/caller.t
--- perl/t/op/caller.t#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/t/op/caller.t 2008-01-30 10:46:51.000000000 -0800
@@ -77,6 +77,7 @@
sub check_bits
{
+ local $Level = $Level + 2;
my ($got, $exp, $desc) = @_;
if (! ok($got eq $exp, $desc)) {
diag(' got: ' . show_bits($got));
@@ -90,22 +91,32 @@
check_bits( (caller(0))[9], $w, "warnings match caller ($id)");
}
-# NB : extend the warning mask values below when new warnings are added
{
no warnings;
+ # Build the warnings mask dynamically
+ my ($default, $registered);
+ BEGIN {
+ for my $i (0..$warnings::LAST_BIT/2 - 1) {
+ vec($default, $i, 2) = 1;
+ }
+ $registered = $default;
+ vec($registered, $warnings::LAST_BIT/2, 2) = 1;
+ }
BEGIN { check_bits( ${^WARNING_BITS}, "\0" x 12, 'all bits off via "no
warnings"' ) }
testwarn("\0" x 12, 'no bits');
use warnings;
- BEGIN { check_bits( ${^WARNING_BITS},
"\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x05", 'default bits on via "use
warnings"' ); }
- BEGIN { testwarn("\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x05",
'all'); }
+ BEGIN { check_bits( ${^WARNING_BITS}, $default,
+ 'default bits on via "use warnings"' ); }
+ BEGIN { testwarn($default, 'all'); }
# run-time :
# the warning mask has been extended by warnings::register
- testwarn("\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x15", 'ahead of
w::r');
+ testwarn($registered, 'ahead of w::r');
use warnings::register;
- BEGIN { check_bits( ${^WARNING_BITS},
"\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x15", 'warning bits on via "use
warnings::register"' ) }
- testwarn("\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x15", 'following
w::r');
+ BEGIN { check_bits( ${^WARNING_BITS}, $registered,
+ 'warning bits on via "use warnings::register"' ) }
+ testwarn($registered, 'following w::r');
}
==== //depot/maint-5.10/perl/t/op/lc.t#2 (text) ====
Index: perl/t/op/lc.t
--- perl/t/op/lc.t#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/t/op/lc.t 2008-01-30 10:46:51.000000000 -0800
@@ -6,7 +6,12 @@
require './test.pl';
}
-plan tests => 88;
+plan tests => 92;
+
+is(lc(undef), "", "lc(undef) is ''");
+is(lcfirst(undef), "", "lcfirst(undef) is ''");
+is(uc(undef), "", "uc(undef) is ''");
+is(ucfirst(undef), "", "ucfirst(undef) is ''");
$a = "HELLO.* world";
$b = "hello.* WORLD";
==== //depot/maint-5.10/perl/t/op/pat.t#3 (xtext) ====
Index: perl/t/op/pat.t
--- perl/t/op/pat.t#2~33132~ 2008-01-30 10:18:00.000000000 -0800
+++ perl/t/op/pat.t 2008-01-30 10:46:51.000000000 -0800
@@ -2033,9 +2033,10 @@
# Force scalar context on the patern match
sub ok ($;$) {
my($ok, $name) = @_;
+ my $todo = $TODO ? " # TODO $TODO" : '';
printf "%sok %d - %s\n", ($ok ? "" : "not "), $test,
- ($name||$Message)."\tLine ".((caller)[2]);
+ ($name||$Message)."$todo\tLine ".((caller)[2]);
printf "# Failed test at line %d\n", (caller)[2] unless $ok;
@@ -3074,12 +3075,15 @@
ok($a !~ /^\C{4}y/, q{don't match \C{4}y});
}
-$_ = 'aaaaaaaaaa';
-utf8::upgrade($_); chop $_; $\="\n";
-ok(/[^\s]+/, "m/[^\s]/ utf8");
-ok(/[^\d]+/, "m/[^\d]/ utf8");
-ok(($a = $_, $_ =~ s/[^\s]+/./g), "s/[^\s]/ utf8");
-ok(($a = $_, $a =~ s/[^\d]+/./g), "s/[^\s]/ utf8");
+{
+ local $\;
+ $_ = 'aaaaaaaaaa';
+ utf8::upgrade($_); chop $_; $\="\n";
+ ok(/[^\s]+/, "m/[^\s]/ utf8");
+ ok(/[^\d]+/, "m/[^\d]/ utf8");
+ ok(($a = $_, $_ =~ s/[^\s]+/./g), "s/[^\s]/ utf8");
+ ok(($a = $_, $a =~ s/[^\d]+/./g), "s/[^\s]/ utf8");
+}
ok("\x{100}" =~ /\x{100}/, "[perl #15397]");
ok("\x{100}" =~ /(\x{100})/, "[perl #15397]");
@@ -3134,13 +3138,13 @@
foreach (1,2,3,4) {
$p++ if /(??{ $p })/
}
- ok ($p == 5, "[perl #20683] (??{ }) returns stale values");
+ iseq ($p, 5, "[perl #20683] (??{ }) returns stale values");
{ package P; $a=1; sub TIESCALAR { bless[] } sub FETCH { $a++ } }
tie $p, P;
foreach (1,2,3,4) {
/(??{ $p })/
}
- ok ( $p == 5, "(??{ }) returns stale values");
+ iseq ( $p, 5, "(??{ }) returns stale values");
}
{
@@ -3445,6 +3449,7 @@
}
{
+ local $TODO = "See changes 26925-26928, which reverted change 26410";
package lv;
$var = "abc";
sub variable : lvalue { $var }
@@ -3453,16 +3458,17 @@
my $o = bless [], "lv";
my $f = "";
eval { for (1..2) { $f .= $1 if $o->variable =~ /(.)/g } };
- ok($f eq "ab", "pos retained between calls # TODO") or print "# [EMAIL
PROTECTED]";
+ ok($f eq "ab", "pos retained between calls") or print "# [EMAIL
PROTECTED]";
}
{
+ local $TODO = "See changes 26925-26928, which reverted change 26410";
$var = "abc";
sub variable : lvalue { $var }
my $f = "";
eval { for (1..2) { $f .= $1 if variable() =~ /(.)/g } };
- ok($f eq "ab", "pos retained between calls # TODO") or print "# [EMAIL
PROTECTED]";
+ ok($f eq "ab", "pos retained between calls") or print "# [EMAIL
PROTECTED]";
}
# [perl #37836] Simple Regex causes SEGV when run on specific data
@@ -3692,13 +3698,14 @@
sub iseq($$;$) {
my ( $got, $expect, $name)[EMAIL PROTECTED];
+ my $todo = $TODO ? " # TODO $TODO" : '';
$_=defined($_) ? "'$_'" : "undef"
for $got, $expect;
my $ok= $got eq $expect;
- printf "%sok %d - %s\n", ($ok ? "" : "not "), $test,
+ printf "%sok %d - %s$todo\n", ($ok ? "" : "not "), $test,
($name||$Message)."\tLine ".((caller)[2]);
printf "# Failed test at line %d\n".
@@ -4106,12 +4113,13 @@
iseq($^R,'Nothing');
}
{
- local $Message="RT#22395";
+ local $Message="RT 22395";
+ local $TODO = "Should be L+1 not L*(L+3)/2 (L=$l)";
our $count;
for my $l (10,100,1000) {
$count=0;
('a' x $l) =~ /(.*)(?{$count++})[bc]/;
- iseq( $count, $l + 1, "# TODO Should be L+1 not L*(L+3)/2 (L=$l)");
+ iseq( $count, $l + 1);
}
}
{
==== //depot/maint-5.10/perl/t/op/re_tests#2 (text) ====
Index: perl/t/op/re_tests
--- perl/t/op/re_tests#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/t/op/re_tests 2008-01-30 10:46:51.000000000 -0800
@@ -1,3 +1,6 @@
+# This stops me getting screenfulls of syntax errors every time I accidentally
+# run this file via a shell glob
+__END__
abc abc y $& abc
abc abc y $-[0] 0
abc abc y $+[0] 3
==== //depot/maint-5.10/perl/t/op/readdir.t#2 (xtext) ====
Index: perl/t/op/readdir.t
--- perl/t/op/readdir.t#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/t/op/readdir.t 2008-01-30 10:46:51.000000000 -0800
@@ -20,11 +20,12 @@
@D = grep(/^[^\.].*\.t$/i, readdir(OP));
closedir(OP);
-##
-## This range will have to adjust as the number of tests expands,
-## as it's counting the number of .t files in src/t
-##
-my ($min, $max) = (150, 170);
+open $man, "<../MANIFEST" or die "Can't open ../MANIFEST: $!";
+my $expect;
+while (<$man>) {
+ ++$expect if m!^t/op/[^/]+\t!;
+}
+my ($min, $max) = ($expect - 10, $expect + 10);
if (@D > $min && @D < $max) { print "ok 2\n"; }
else {
printf "not ok 2 # counting op/*.t, expect $min < %d < $max files\n",
==== //depot/maint-5.10/perl/t/op/regexp.t#2 (xtext) ====
Index: perl/t/op/regexp.t
--- perl/t/op/regexp.t#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/t/op/regexp.t 2008-01-30 10:46:51.000000000 -0800
@@ -77,9 +77,9 @@
TEST:
foreach (@tests) {
$test++;
- if (!/\S/ || /^\s*#/) {
+ if (!/\S/ || /^\s*#/ || /^__END__$/) {
print "ok $test # (Blank line or comment)\n";
- if (/\S/) { print $_ };
+ if (/#/) { print $_ };
next;
}
chomp;
==== //depot/maint-5.10/perl/t/op/sprintf.t#2 (xtext) ====
Index: perl/t/op/sprintf.t
--- perl/t/op/sprintf.t#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/t/op/sprintf.t 2008-01-30 10:46:51.000000000 -0800
@@ -49,8 +49,8 @@
}
$evalData = eval $data;
- $data = ref $evalData ? $evalData : [$evalData];
- push @tests, [$template, $data, $result, $comment];
+ $evalData = ref $evalData ? $evalData : [$evalData];
+ push @tests, [$template, $evalData, $result, $comment, $data];
}
print '1..', scalar @tests, "\n";
@@ -66,9 +66,9 @@
};
for ($i = 1; @tests; $i++) {
- ($template, $data, $result, $comment) = @{shift @tests};
+ ($template, $evalData, $result, $comment, $data) = @{shift @tests};
$w = undef;
- $x = sprintf(">$template<", @$data);
+ $x = sprintf(">$template<", @$evalData);
substr($x, -1, 0) = $w if $w;
# $x may have 3 exponent digits, not 2
my $y = $x;
==== //depot/maint-5.10/perl/t/op/upgrade.t#1 (text) ====
Index: perl/t/op/upgrade.t
--- /dev/null 2008-01-30 12:36:05.487199339 -0800
+++ perl/t/op/upgrade.t 2008-01-30 10:46:51.000000000 -0800
@@ -0,0 +1,50 @@
+#!./perl -w
+
+# Check that we can "upgrade" from anything to anything else.
+# Curiously, before this, lib/Math/Trig.t was the only code anywhere in the
+# build or testsuite that upgraded an NV to an RV
+
+BEGIN {
+ chdir 't';
+ @INC = '../lib';
+ require './test.pl';
+}
+
+use strict;
+
+my $null;
+
+$! = 1;
+my %types = (
+ null => $null,
+ iv => 3,
+ nv => .5,
+ rv => [],
+ pv => "Perl rules",
+ pviv => 3,
+ pvnv => 1==1,
+ pvmg => $^,
+);
+
+# This is somewhat cheating but I can't think of anything built in that I can
+# copy that already has type PVIV
+$types{pviv} = "Perl rules!";
+
+# use Devel::Peek; Dump $pvmg;
+
+my @keys = keys %types;
+plan tests => @keys * @keys;
+
+foreach my $source_type (@keys) {
+ foreach my $dest_type (@keys) {
+ # Pads re-using variables might contaminate this
+ my $vars = {};
+ $vars->{dest} = $types{$dest_type};
+ $vars->{source} = $types{$source_type};
+ # The assignment can potentially trigger assertion failures, so it's
+ # useful to have the diagnostics about what was attempted printed first
+ print "# Assigning $source_type to $dest_type\n";
+ $vars->{dest} = $vars->{source};
+ is ($vars->{dest}, $vars->{source});
+ }
+}
==== //depot/maint-5.10/perl/t/test.pl#2 (text) ====
Index: perl/t/test.pl
--- perl/t/test.pl#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/t/test.pl 2008-01-30 10:46:51.000000000 -0800
@@ -24,6 +24,17 @@
$TODO = 0;
$NO_ENDING = 0;
+# Use this instead of print to avoid interference while testing globals.
+sub _print {
+ local($\, $", $,) = (undef, ' ', '');
+ print STDOUT @_;
+}
+
+sub _print_stderr {
+ local($\, $", $,) = (undef, ' ', '');
+ print STDERR @_;
+}
+
sub plan {
my $n;
if (@_ == 1) {
@@ -36,7 +47,7 @@
my %plan = @_;
$n = $plan{tests};
}
- print STDOUT "1..$n\n" unless $noplan;
+ _print "1..$n\n" unless $noplan;
$planned = $n;
}
@@ -44,10 +55,10 @@
my $ran = $test - 1;
if (!$NO_ENDING) {
if (defined $planned && $planned != $ran) {
- print STDERR
+ _print_stderr
"# Looks like you planned $planned tests but ran $ran.\n";
} elsif ($noplan) {
- print "1..$ran\n";
+ _print "1..$ran\n";
}
}
}
@@ -58,8 +69,8 @@
return unless @_;
my @mess = map { /^#/ ? "$_\n" : "# $_\n" }
map { split /\n/ } @_;
- my $fh = $TODO ? *STDOUT : *STDERR;
- print $fh @mess;
+ my $func = $TODO ? \&_print : \&_print_stderr;
+ $func->(@mess);
}
@@ -69,9 +80,9 @@
sub skip_all {
if (@_) {
- print STDOUT "1..0 # Skipped: @_\n";
+ _print "1..0 # Skipped: @_\n";
} else {
- print STDOUT "1..0\n";
+ _print "1..0\n";
}
exit(0);
}
@@ -90,7 +101,7 @@
}
$out .= " # TODO $TODO" if $TODO;
- print STDOUT "$out\n";
+ _print "$out\n";
unless ($pass) {
_diag "# Failed $where\n";
@@ -306,7 +317,7 @@
my $why = shift;
my $n = @_ ? shift : 1;
for (1..$n) {
- print STDOUT "ok $test # skip: $why\n";
+ _print "ok $test # skip: $why\n";
$test = $test + 1;
}
local $^W = 0;
@@ -318,7 +329,7 @@
my $n = @_ ? shift : 1;
for (1..$n) {
- print STDOUT "not ok $test # TODO & SKIP: $why\n";
+ _print "not ok $test # TODO & SKIP: $why\n";
$test = $test + 1;
}
local $^W = 0;
@@ -345,12 +356,12 @@
$key = "" . $key;
if (exists $orig->{$key}) {
if ($orig->{$key} ne $value) {
- print STDOUT "# key ", _qq($key), " was ", _qq($orig->{$key}),
+ _print "# key ", _qq($key), " was ", _qq($orig->{$key}),
" now ", _qq($value), "\n";
$fail = 1;
}
} else {
- print STDOUT "# key ", _qq($key), " is ", _qq($value),
+ _print "# key ", _qq($key), " is ", _qq($value),
", not in original.\n";
$fail = 1;
}
@@ -359,7 +370,7 @@
# Force a hash recompute if this perl's internals can cache the hash key.
$_ = "" . $_;
next if (exists $suspect->{$_});
- print STDOUT "# key ", _qq($_), " was ", _qq($orig->{$_}), " now
missing.\n";
+ _print "# key ", _qq($_), " was ", _qq($orig->{$_}), " now missing.\n";
$fail = 1;
}
!$fail;
@@ -476,7 +487,7 @@
if ($args{verbose}) {
my $stdindisplay = $stdin;
$stdindisplay =~ s/\n/\n\#/g;
- print STDERR "# $stdindisplay\n";
+ _print_stderr "# $stdindisplay\n";
}
`$stdin`;
$runperl .= q{ < teststdin };
@@ -494,7 +505,7 @@
if ($args{verbose}) {
my $runperldisplay = $runperl;
$runperldisplay =~ s/\n/\n\#/g;
- print STDERR "# $runperldisplay\n";
+ _print_stderr "# $runperldisplay\n";
}
return $runperl;
}
@@ -547,7 +558,7 @@
*run_perl = \&runperl; # Nice alias.
sub DIE {
- print STDERR "# @_\n";
+ _print_stderr "# @_\n";
exit 1;
}
@@ -603,7 +614,7 @@
sub unlink_all {
foreach my $file (@_) {
1 while unlink $file;
- print STDERR "# Couldn't unlink '$file': $!\n" if -f $file;
+ _print_stderr "# Couldn't unlink '$file': $!\n" if -f $file;
}
}
End of Patch.