Change 33823 by [EMAIL PROTECTED] on 2008/05/12 10:24:27

        Integrate:
        [ 33674]
        Test::More::is_deeply may do overloading (at least for TODOs), and
        overloading may require Scalar::Util, which it won't find if all
        the paths in @INC are relative to somewhere other than where we are.
        
        [ 33705]
        Test dbmopen more thoroughly, including closing the coverage hole for
        the code that automatically requires AnyDBM_File.pm in pp_dbmopen.
        
        [ 33749]
        Subject: [perl #53238] Patch to stop t/op/fork.t relying on rand 
        From: David Dick (via RT) <[EMAIL PROTECTED]>
        Date: Wed, 23 Apr 2008 04:12:42 -0700
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 33752]
        Subject: [PATCH] another go; was RE: [perl #49302] [[:print:]] v 
\p{Print} 
        From: "Robin Barker" <[EMAIL PROTECTED]>
        Date: Fri, 25 Apr 2008 14:21:06 +0100
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 33765]
        Subject: [PATCH] extra tests for t/op/sprintf2.t (was Re: [perl #45383] 
RE:
        From: Bram <[EMAIL PROTECTED]>
        Date: Tue, 29 Apr 2008 22:27:21 +0200
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 33767]
        A skip() function is missing, to get this test pass with miniperl
        
        [ 33768]
        Avoid garbage in test output when running make minitest.
        This makes all minitests pass on my machine.
        
        [ 33769]
        Subject: Re: [PATCH] testing $/ with in memory files
        From: Bram <[EMAIL PROTECTED]>
        Date: Wed, 30 Apr 2008 11:55:30 +0200
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 33774]
        Subject: [perl #53560] Patch for linux LDAP groups 
        From: David Dick (via RT) <[EMAIL PROTECTED]>
        Date: Wed, 30 Apr 2008 05:17:54 -0700
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 33775]
        Add a test for "lc(LATIN CAPITAL LETTER SHARP S)"
        
        [ 33776]
        Subject: [PATCH] t/op/pat.t
        From: "Robin Barker" <[EMAIL PROTECTED]>
        Date: Thu, 1 May 2008 19:12:28 +0100
        Message-ID: <[EMAIL PROTECTED]>

Affected files ...

... //depot/maint-5.10/perl/MANIFEST#22 integrate
... //depot/maint-5.10/perl/ext/File/Glob/t/basic.t#3 integrate
... //depot/maint-5.10/perl/pod/perlre.pod#3 integrate
... //depot/maint-5.10/perl/t/base/rs.t#2 integrate
... //depot/maint-5.10/perl/t/op/dbm.t#1 branch
... //depot/maint-5.10/perl/t/op/fork.t#2 integrate
... //depot/maint-5.10/perl/t/op/groups.t#2 integrate
... //depot/maint-5.10/perl/t/op/lc.t#3 integrate
... //depot/maint-5.10/perl/t/op/pat.t#7 integrate
... //depot/maint-5.10/perl/t/op/sprintf2.t#2 integrate
... //depot/maint-5.10/perl/t/run/fresh_perl.t#2 integrate

Differences ...

==== //depot/maint-5.10/perl/MANIFEST#22 (text) ====
Index: perl/MANIFEST
--- perl/MANIFEST#21~33821~     2008-05-11 04:19:32.000000000 -0700
+++ perl/MANIFEST       2008-05-12 03:24:27.000000000 -0700
@@ -3753,6 +3753,7 @@
 t/op/context.t                 See if context propagation works
 t/op/cproto.t                  Check builtin prototypes
 t/op/crypt.t                   See if crypt works
+t/op/dbm.t                     See if dbmopen/dbmclose work
 t/op/defins.t                  See if auto-insert of defined() works
 t/op/delete.t                  See if delete works
 t/op/die_exit.t                        See if die and exit status interaction 
works

==== //depot/maint-5.10/perl/ext/File/Glob/t/basic.t#3 (xtext) ====
Index: perl/ext/File/Glob/t/basic.t
--- perl/ext/File/Glob/t/basic.t#2~33628~       2008-04-02 09:51:24.000000000 
-0700
+++ perl/ext/File/Glob/t/basic.t        2008-05-12 03:24:27.000000000 -0700
@@ -173,8 +173,8 @@
     chdir $dir
        or die "Could not chdir to $dir: $!";
     my(@glob_files) = glob("a*{d[e]}j");
-    local $TODO = "home-made glob doesn't do regexes" if $^O eq 'VMS';
-    is_deeply([EMAIL PROTECTED], ['a_dej']);
     chdir $cwd
        or die "Could not chdir back to $cwd: $!";
+    local $TODO = "home-made glob doesn't do regexes" if $^O eq 'VMS';
+    is_deeply([EMAIL PROTECTED], ['a_dej']);
 }

==== //depot/maint-5.10/perl/pod/perlre.pod#3 (text) ====
Index: perl/pod/perlre.pod
--- perl/pod/perlre.pod#2~33610~        2008-03-30 16:20:46.000000000 -0700
+++ perl/pod/perlre.pod 2008-05-12 03:24:27.000000000 -0700
@@ -375,20 +375,60 @@
     digit       IsDigit        \d
     graph       IsGraph
     lower       IsLower
-    print       IsPrint
-    punct       IsPunct
+    print       IsPrint                (but see [2] below)
+    punct       IsPunct                (but see [3] below)
     space       IsSpace
                 IsSpacePerl    \s
     upper       IsUpper
-    word        IsWord
+    word        IsWord         \w
     xdigit      IsXDigit
 
 For example C<[[:lower:]]> and C<\p{IsLower}> are equivalent.
 
+However, the equivalence between C<[[:xxxxx:]]> and C<\p{IsXxxxx}>
+is not exact.
+
+=over 4
+
+=item [1]
+
 If the C<utf8> pragma is not used but the C<locale> pragma is, the
 classes correlate with the usual isalpha(3) interface (except for
 "word" and "blank").
 
+But if the C<locale> or C<encoding> pragmas are not used and
+the string is not C<utf8>, then C<[[:xxxxx:]]> (and C<\w>, etc.)
+will not match characters 0x80-0xff; whereas C<\p{IsXxxxx}> will
+force the string to C<utf8> and can match these characters
+(as Unicode).
+
+=item [2]
+
+C<\p{IsPrint}> matches characters 0x09-0x0d but C<[[:print:]]> does not.
+
+=item [3]
+
+C<[[:punct::]]> matches the following but C<\p{IsPunct}> does not,
+because they are classed as symbols (not punctuation) in Unicode.
+
+=over 4
+
+=item C<$>
+
+Currency symbol
+
+=item C<+> C<< < >> C<=> C<< > >> C<|> C<~>
+
+Mathematical symbols
+
+=item C<^> C<`>
+
+Modifier symbols (accents)
+
+=back
+
+=back
+
 The other named classes are:
 
 =over 4

==== //depot/maint-5.10/perl/t/base/rs.t#2 (xtext) ====
Index: perl/t/base/rs.t
--- perl/t/base/rs.t#1~32694~   2007-12-22 01:23:09.000000000 -0800
+++ perl/t/base/rs.t    2008-05-12 03:24:27.000000000 -0700
@@ -1,9 +1,11 @@
 #!./perl
 # Test $!
 
-print "1..17\n";
+print "1..28\n";
 
+$test_count = 1;
 $teststring = "1\n12\n123\n1234\n1234\n12345\n\n123456\n1234567\n";
+$teststring2 = "1234567890123456789012345678901234567890";
 
 # Create our test datafile
 1 while unlink 'foo';                # in case junk left around
@@ -13,85 +15,25 @@
 print TESTFILE $teststring;
 close TESTFILE or die "error $! $^E closing";
 
+$test_count_start = $test_count;  # Needed to know how many tests to skip
 open TESTFILE, "<./foo";
 binmode TESTFILE;
-
-# Check the default $/
-$bar = <TESTFILE>;
-if ($bar eq "1\n") {print "ok 1\n";} else {print "not ok 1\n";}
-
-# explicitly set to \n
-$/ = "\n";
-$bar = <TESTFILE>;
-if ($bar eq "12\n") {print "ok 2\n";} else {print "not ok 2\n";}
-
-# Try a non line terminator
-$/ = 3;
-$bar = <TESTFILE>;
-if ($bar eq "123") {print "ok 3\n";} else {print "not ok 3\n";}
-
-# Eat the line terminator
-$/ = "\n";
-$bar = <TESTFILE>;
-
-# How about a larger terminator
-$/ = "34";
-$bar = <TESTFILE>;
-if ($bar eq "1234") {print "ok 4\n";} else {print "not ok 4\n";}
-
-# Eat the line terminator
-$/ = "\n";
-$bar = <TESTFILE>;
-
-# Does paragraph mode work?
-$/ = '';
-$bar = <TESTFILE>;
-if ($bar eq "1234\n12345\n\n") {print "ok 5\n";} else {print "not ok 5\n";}
-
-# Try slurping the rest of the file
-$/ = undef;
-$bar = <TESTFILE>;
-if ($bar eq "123456\n1234567\n") {print "ok 6\n";} else {print "not ok 6\n";}
+test_string(*TESTFILE);
+close TESTFILE;
+unlink "./foo";
 
 # try the record reading tests. New file so we don't have to worry about
 # the size of \n.
-close TESTFILE;
-unlink "./foo";
 open TESTFILE, ">./foo";
-print TESTFILE "1234567890123456789012345678901234567890";
+print TESTFILE $teststring2;
 binmode TESTFILE;
 close TESTFILE;
 open TESTFILE, "<./foo";
 binmode TESTFILE;
-
-# Test straight number
-$/ = \2;
-$bar = <TESTFILE>;
-if ($bar eq "12") {print "ok 7\n";} else {print "not ok 7\n";}
-
-# Test stringified number
-$/ = \"2";
-$bar = <TESTFILE>;
-if ($bar eq "34") {print "ok 8\n";} else {print "not ok 8\n";}
-
-# Integer variable
-$foo = 2;
-$/ = \$foo;
-$bar = <TESTFILE>;
-if ($bar eq "56") {print "ok 9\n";} else {print "not ok 9\n";}
-
-# String variable
-$foo = "2";
-$/ = \$foo;
-$bar = <TESTFILE>;
-if ($bar eq "78") {print "ok 10\n";} else {print "not ok 10\n";}
-
-# Naughty straight number - should get the rest of the file
-$/ = \0;
-$bar = <TESTFILE>;
-if ($bar eq "90123456789012345678901234567890") {print "ok 11\n";} else {print 
"not ok 11\n";}
-
+test_record(*TESTFILE);
 close TESTFILE;
+$test_count_end = $test_count;  # Needed to know how many tests to skip
+
 
 # Now for the tricky bit--full record reading
 if ($^O eq 'VMS') {
@@ -115,23 +57,30 @@
   open TESTFILE, "<./foo.bar";
   $/ = \10;
   $bar = <TESTFILE>;
-  if ($bar eq "foo\n") {print "ok 12\n";} else {print "not ok 12\n";}
+  if ($bar eq "foo\n") {print "ok $test_count\n";} else {print "not ok 
$test_count\n";}
+  $test_count++;
   $bar = <TESTFILE>;
-  if ($bar eq "foobar\n") {print "ok 13\n";} else {print "not ok 13\n";}
+  if ($bar eq "foobar\n") {print "ok $test_count\n";} else {print "not ok 
$test_count\n";}
+  $test_count++;
   # can we do a short read?
   $/ = \2;
   $bar = <TESTFILE>;
-  if ($bar eq "ba") {print "ok 14\n";} else {print "not ok 14\n";}
+  if ($bar eq "ba") {print "ok $test_count\n";} else {print "not ok 
$test_count\n";}
+  $test_count++;
   # do we get the rest of the record?
   $bar = <TESTFILE>;
-  if ($bar eq "z\n") {print "ok 15\n";} else {print "not ok 15\n";}
+  if ($bar eq "z\n") {print "ok $test_count\n";} else {print "not ok 
$test_count\n";}
+  $test_count++;
 
   close TESTFILE;
   1 while unlink qw(foo.bar foo.com foo.fdl);
 } else {
   # Nobody else does this at the moment (well, maybe OS/390, but they can
   # put their own tests in) so we just punt
-  foreach $test (12..15) {print "ok $test # skipped on non-VMS system\n"};
+  foreach $test ($test_count..$test_count + 3) {
+      print "ok $test # skipped on non-VMS system\n";
+      $test_count++;
+  }
 }
 
 $/ = "\n";
@@ -147,7 +96,8 @@
     else {
        print "not ";
     }
-    print "ok 16\n";
+    print "ok $test_count # open/readline/close on our variable\n";
+    $test_count++;
 }
 
 {
@@ -160,8 +110,126 @@
     else {
        print "not ";
     }
-    print "ok 17\n";
+    print "ok $test_count # open/readline/close on my variable\n";
+    $test_count++;
+}
+
+
+if ($ENV{PERL_CORE_MINITEST} or $ENV{_} =~ m/miniperl/) {
+  # In-memory files necessitate PerlIO::via::scalar, thus a perl with
+  # perlio and dynaloading enabled. miniperl won't be able to run this
+  # test, so skip it
+
+  for $test ($test_count .. $test_count + ($test_count_end - $test_count_start 
- 1)) {
+    print "ok $test # skipped - Can't test in memory file with miniperl\n";
+    $test_count++;
+  }
+}
+else {
+  # Test if a file in memory behaves the same as a real file (= re-run the 
test with a file in memory)
+  open TESTFILE, "<", \$teststring;
+  test_string(*TESTFILE);
+  close TESTFILE;
+
+  open TESTFILE, "<", \$teststring2;
+  test_record(*TESTFILE);
+  close TESTFILE;
 }
 
 # Get rid of the temp file
 END { unlink "./foo"; }
+
+sub test_string {
+  *FH = shift;
+
+  # Check the default $/
+  $bar = <FH>;
+  if ($bar ne "1\n") {print "not ";}
+  print "ok $test_count # default \$/\n";
+  $test_count++;
+
+  # explicitly set to \n
+  $/ = "\n";
+  $bar = <FH>;
+  if ($bar ne "12\n") {print "not ";}
+  print "ok $test_count # \$/ = \"\\n\"\n";
+  $test_count++;
+
+  # Try a non line terminator
+  $/ = 3;
+  $bar = <FH>;
+  if ($bar ne "123") {print "not ";}
+  print "ok $test_count # \$/ = 3\n";
+  $test_count++;
+
+  # Eat the line terminator
+  $/ = "\n";
+  $bar = <FH>;
+
+  # How about a larger terminator
+  $/ = "34";
+  $bar = <FH>;
+  if ($bar ne "1234") {print "not ";}
+  print "ok $test_count # \$/ = \"34\"\n";
+  $test_count++;
+
+  # Eat the line terminator
+  $/ = "\n";
+  $bar = <FH>;
+
+  # Does paragraph mode work?
+  $/ = '';
+  $bar = <FH>;
+  if ($bar ne "1234\n12345\n\n") {print "not ";}
+  print "ok $test_count # \$/ = ''\n";
+  $test_count++;
+
+  # Try slurping the rest of the file
+  $/ = undef;
+  $bar = <FH>;
+  if ($bar ne "123456\n1234567\n") {print "not ";}
+  print "ok $test_count # \$/ = undef\n";
+  $test_count++;
+}
+
+sub test_record {
+  *FH = shift;
+
+  # Test straight number
+  $/ = \2;
+  $bar = <FH>;
+  if ($bar ne "12") {print "not ";}
+  print "ok $test_count # \$/ = \\2\n";
+  $test_count++;
+
+  # Test stringified number
+  $/ = \"2";
+  $bar = <FH>;
+  if ($bar ne "34") {print "not ";}
+  print "ok $test_count # \$/ = \"2\"\n";
+  $test_count++;
+
+  # Integer variable
+  $foo = 2;
+  $/ = \$foo;
+  $bar = <FH>;
+  if ($bar ne "56") {print "not ";}
+  print "ok $test_count # \$/ = \\\$foo (\$foo = 2)\n";
+  $test_count++;
+
+  # String variable
+  $foo = "2";
+  $/ = \$foo;
+  $bar = <FH>;
+  if ($bar ne "78") {print "not ";}
+  print "ok $test_count # \$/ = \\\$foo (\$foo = \"2\")\n";
+  $test_count++;
+
+  # Naughty straight number - should get the rest of the file
+  $/ = \0;
+  $bar = <FH>;
+  if ($bar ne "90123456789012345678901234567890") {print "not ";}
+  print "ok $test_count # \$/ = \\0\n";
+  $test_count++;
+}
+

==== //depot/maint-5.10/perl/t/op/dbm.t#1 (text) ====
Index: perl/t/op/dbm.t
--- /dev/null   2008-05-07 15:08:24.549929899 -0700
+++ perl/t/op/dbm.t     2008-05-12 03:24:27.000000000 -0700
@@ -0,0 +1,55 @@
+#!./perl
+
+BEGIN {
+    chdir 't';
+    @INC = '../lib';
+    require './test.pl';
+
+    eval { require AnyDBM_File }; # not all places have dbm* functions
+    skip_all("No dbm functions") if $@;
+}
+
+plan tests => 4;
+
+# This is [20020104.007] "coredump on dbmclose"
+
+my $prog = <<'EOC';
+package Foo;
+sub new {
+        my $proto = shift;
+        my $class = ref($proto) || $proto;
+        my $self  = {};
+        bless($self,$class);
+        my %LT;
+        dbmopen(%LT, "dbmtest", 0666) ||
+           die "Can't open dbmtest because of $!\n";
+        $self->{'LT'} = \%LT;
+        return $self;
+}
+sub DESTROY {
+        my $self = shift;
+       dbmclose(%{$self->{'LT'}});
+       1 while unlink 'dbmtest';
+       1 while unlink <dbmtest.*>;
+       print "ok\n";
+}
+package main;
+$test = Foo->new(); # must be package var
+EOC
+
+fresh_perl_is("require AnyDBM_File;\n$prog", 'ok', {}, 'explict require');
+fresh_perl_is($prog, 'ok', {}, 'implicit require');
+
+$prog = <<'EOC';
[EMAIL PROTECTED] = ();
+dbmopen(%LT, "dbmtest", 0666);
+1 while unlink 'dbmtest';
+1 while unlink <dbmtest.*>;
+die "Failed to fail!";
+EOC
+
+fresh_perl_like($prog, qr/No dbm on this machine/, {},
+               'implicit require fails');
+fresh_perl_like('delete $::{"AnyDBM_File::"}; ' . $prog,
+               qr/No dbm on this machine/, {},
+               'implicit require and no stash fails');

==== //depot/maint-5.10/perl/t/op/fork.t#2 (xtext) ====
Index: perl/t/op/fork.t
--- perl/t/op/fork.t#1~32694~   2007-12-22 01:23:09.000000000 -0800
+++ perl/t/op/fork.t    2008-05-12 03:24:27.000000000 -0700
@@ -445,16 +445,14 @@
 my $pid = fork;
 die "fork: $!" if !defined $pid;
 if ($pid == 0) {
-    my $rand_child = rand;
     close RDR;
-    print WTR $rand_child, "\n";
+    print WTR "STRING_FROM_CHILD\n";
     close WTR;
 } else {
-    my $rand_parent = rand;
     close WTR;
-    chomp(my $rand_child  = <RDR>);
+    chomp(my $string_from_child  = <RDR>);
     close RDR;
-    print $rand_child ne $rand_parent, "\n";
+    print $string_from_child eq "STRING_FROM_CHILD", "\n";
 }
 EXPECT
 1

==== //depot/maint-5.10/perl/t/op/groups.t#2 (xtext) ====
Index: perl/t/op/groups.t
--- perl/t/op/groups.t#1~32694~ 2007-12-22 01:23:09.000000000 -0800
+++ perl/t/op/groups.t  2008-05-12 03:24:27.000000000 -0700
@@ -136,7 +136,7 @@
 print "# gr = @gr\n";
 
 my %did;
-if ($^O =~ /^(?:uwin|cygwin|interix|solaris)$/) {
+if ($^O =~ /^(?:uwin|cygwin|interix|solaris|linux)$/) {
        # Or anybody else who can have spaces in group names.
        $gr1 = join(' ', grep(!$did{$_}++, sort split(' ', join(' ', @gr))));
 } else {

==== //depot/maint-5.10/perl/t/op/lc.t#3 (text) ====
Index: perl/t/op/lc.t
--- perl/t/op/lc.t#2~33133~     2008-01-30 10:46:51.000000000 -0800
+++ perl/t/op/lc.t      2008-05-12 03:24:27.000000000 -0700
@@ -6,7 +6,7 @@
     require './test.pl';
 }
 
-plan tests => 92;
+plan tests => 93;
 
 is(lc(undef),     "", "lc(undef) is ''");
 is(lcfirst(undef), "", "lcfirst(undef) is ''");
@@ -217,3 +217,6 @@
     lc $_;
     is($_, "Hello");
 }
+
+# new in Unicode 5.1.0
+is(lc("\x{1E9E}"), "\x{df}", "lc(LATIN CAPITAL LETTER SHARP S)");

==== //depot/maint-5.10/perl/t/op/pat.t#7 (xtext) ====
Index: perl/t/op/pat.t
--- perl/t/op/pat.t#6~33732~    2008-04-22 12:53:49.000000000 -0700
+++ perl/t/op/pat.t     2008-05-12 03:24:27.000000000 -0700
@@ -2030,7 +2030,7 @@
 
 $test = 687;
 
-# Force scalar context on the patern match
+# Force scalar context on the pattern match
 sub ok ($;$) {
     my($ok, $name) = @_;
     my $todo = $TODO ? " # TODO $TODO" : '';
@@ -2044,6 +2044,18 @@
     return $ok;
 }
 
+sub skip {
+    my $why = shift;
+    $why =~ s/\n.*//s;
+    my $n    = @_ ? shift : 1;
+    for (1..$n) {
+        print "ok $test # skip: $why\n";
+        $test++;
+    }
+    local $^W = 0;
+    last SKIP;
+}
+
 {
     # Check that \x## works. 5.6.1 and 5.005_03 fail some of these.
     $x = "\x4e" . "E";
@@ -4552,6 +4564,32 @@
     iseq($te[0], '../');
 }
 
+SKIP: {
+    unless ($ordA == 65) { skip("Assumes ASCII", 4) }
+
+    my @notIsPunct = grep {/[[:punct:]]/ and not /\p{IsPunct}/}
+                       map {chr} 0x20..0x7f;
+    iseq( join('', @notIsPunct), '$+<=>^`|~',
+       '[:punct:] disagress with IsPunct on Symbols');
+
+    my @isPrint = grep {not/[[:print:]]/ and /\p{IsPrint}/}
+                       map {chr} 0..0x1f, 0x7f..0x9f;
+    iseq( join('', @isPrint), "\x09\x0a\x0b\x0c\x0d\x85",
+       'IsPrint disagrees with [:print:] on control characters');
+
+    my @isPunct = grep {/[[:punct:]]/ != /\p{IsPunct}/}
+                       map {chr} 0x80..0xff;
+    iseq( join('', @isPunct), "\xa1\xab\xb7\xbb\xbf",          # ¡ « · » ¿
+       'IsPunct disagrees with [:punct:] outside ASCII');
+
+    my @isPunctLatin1 = eval q{
+       use encoding 'latin1';
+       grep {/[[:punct:]]/ != /\p{IsPunct}/} map {chr} 0x80..0xff;
+    };
+    if( $@ ){ skip( $@, 1); }
+    iseq( join('', @isPunctLatin1), '', 
+       'IsPunct agrees with [:punct:] with explicit Latin1');
+} 
 
 
 # Test counter is at bottom of file. Put new tests above here.
@@ -4612,6 +4650,6 @@
 iseq(0+$::test,$::TestCount,"Got the right number of tests!");
 # Don't forget to update this!
 BEGIN {
-    $::TestCount = 4020;
+    $::TestCount = 4024;
     print "1..$::TestCount\n";
 }

==== //depot/maint-5.10/perl/t/op/sprintf2.t#2 (text) ====
Index: perl/t/op/sprintf2.t
--- perl/t/op/sprintf2.t#1~32694~       2007-12-22 01:23:09.000000000 -0800
+++ perl/t/op/sprintf2.t        2008-05-12 03:24:27.000000000 -0700
@@ -6,7 +6,7 @@
     require './test.pl';
 }   
 
-plan tests => 1292;
+plan tests => 1295;
 
 is(
     sprintf("%.40g ",0.01),
@@ -134,3 +134,8 @@
     }
 }
 
+# test that %f doesn't panic with +Inf, -Inf, NaN [perl #45383]
+foreach my $n (2**1e100, -2**1e100, 2**1e100/2**1e100) { # +Inf, -Inf, NaN
+    eval { my $f = sprintf("%f", $n); };
+    is $@, "", "sprintf(\"%f\", $n)";
+}

==== //depot/maint-5.10/perl/t/run/fresh_perl.t#2 (text) ====
Index: perl/t/run/fresh_perl.t
--- perl/t/run/fresh_perl.t#1~32694~    2007-12-22 01:23:09.000000000 -0800
+++ perl/t/run/fresh_perl.t     2008-05-12 03:24:27.000000000 -0700
@@ -716,36 +716,6 @@
 print join '', @a, "\n";
 EXPECT
 123456789
-######## [ID 20020104.007] "coredump on dbmclose"
-package Foo;
-eval { require AnyDBM_File }; # not all places have dbm* functions
-if ($@) {
-    print "ok\n";
-    exit 0;
-}
-package Foo;
-sub new {
-        my $proto = shift;
-        my $class = ref($proto) || $proto;
-        my $self  = {};
-        bless($self,$class);
-        my %LT;
-        dbmopen(%LT, "dbmtest", 0666) ||
-           die "Can't open dbmtest because of $!\n";
-        $self->{'LT'} = \%LT;
-        return $self;
-}
-sub DESTROY {
-        my $self = shift;
-       dbmclose(%{$self->{'LT'}});
-       1 while unlink 'dbmtest';
-       1 while unlink <dbmtest.*>;
-       print "ok\n";
-}
-package main;
-$test = Foo->new(); # must be package var
-EXPECT
-ok
 ######## example from Camel 5, ch. 15, pp.406 (with my)
 # SKIP: ord "A" == 193 # EBCDIC
 use strict;
End of Patch.

Reply via email to