X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fop%2Fmisc.t;h=38690305cfe73e5c7b79760207ba6d5bb05d4cc3;hb=b0f2b690b4ba59b02c372a35658748cb0f31c38e;hp=931e6b35c63e73425de6aa2f14bc4b580d907f4d;hpb=0b490c9cf3b42eb2e5ff3d67a31af1e39c211fe0;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/op/misc.t b/t/op/misc.t index 931e6b3..3869030 100755 --- a/t/op/misc.t +++ b/t/op/misc.t @@ -17,7 +17,7 @@ $tmpfile = "misctmp000"; 1 while -f ++$tmpfile; END { while($tmpfile && unlink $tmpfile){} } -$CAT = (($^O eq 'MSWin32') ? '.\perl -e "print <>"' : 'cat'); +$CAT = (($^O eq 'MSWin32') ? '.\perl -e "print <>"' : (($^O eq 'NetWare') ? 'perl -e "print <>"' : 'cat')); for (@prgs){ my $switch; @@ -35,6 +35,9 @@ for (@prgs){ if ($^O eq 'MSWin32') { $results = `.\\perl -I../lib $switch $tmpfile 2>&1`; } + elsif ($^O eq 'NetWare') { + $results = `perl -I../lib $switch $tmpfile 2>&1`; + } else { $results = `./perl $switch $tmpfile 2>&1`; } @@ -45,6 +48,7 @@ for (@prgs){ # bison says 'parse error' instead of 'syntax error', # various yaccs may or may not capitalize 'syntax'. $results =~ s/^(syntax|parse) error/syntax error/mig; + $results =~ s/\n\n/\n/ if $^O eq 'VMS'; # pipes double these sometimes $expected =~ s/\n+$//; if ( $results ne $expected ) { print STDERR "PROG: $switch\n$prog\n"; @@ -528,35 +532,8 @@ print "ok\n"; EXPECT ok ######## -my @l = qw(hello.* world); -my $x; - -foreach $x (@l) { - print "before - $x\n"; - $x = "\Q$x\E"; - print "quotemeta - $x\n"; - $x = "\u$x"; - print "ucfirst - $x\n"; - $x = "\l$x"; - print "lcfirst - $x\n"; - $x = "\U$x\E"; - print "uc - $x\n"; - $x = "\L$x\E"; - print "lc - $x\n"; -} +# moved to op/lc.t EXPECT -before - hello.* -quotemeta - hello\.\* -ucfirst - Hello\.\* -lcfirst - hello\.\* -uc - HELLO\.\* -lc - hello\.\* -before - world -quotemeta - world -ucfirst - World -lcfirst - world -uc - WORLD -lc - world ######## sub f { my $a = 1; my $b = 2; my $c = 3; my $d = 4; next } my $x = "foo"; @@ -575,6 +552,40 @@ print qw(ab a\b a\\b); EXPECT aba\ba\b ######## +# lexicals declared after the myeval() definition should not be visible +# within it +sub myeval { eval $_[0] } +my $foo = "ok 2\n"; +myeval('sub foo { local $foo = "ok 1\n"; print $foo; }'); +die $@ if $@; +foo(); +print $foo; +EXPECT +ok 1 +ok 2 +######## +# lexicals outside an eval"" should be visible inside subroutine definitions +# within it +eval <<'EOT'; die $@ if $@; +{ + my $X = "ok\n"; + eval 'sub Y { print $X }'; die $@ if $@; + Y(); +} +EOT +EXPECT +ok +######## +# test that closures generated by eval"" hold on to the CV of the eval"" +# for their entire lifetime +$code = eval q[ + sub { eval '$x = "ok 1\n"'; } +]; +&{$code}(); +print $x; +EXPECT +ok 1 +######## # This test is here instead of pragma/locale.t because # the bug depends on in the internal state of the locale # settings and pragma/locale messes up that state pretty badly. @@ -590,7 +601,7 @@ my $have_setlocale = $Config{d_setlocale} eq 'define'; $have_setlocale = 0 if $@; # Visual C's CRT goes silly on strings of the form "en_US.ISO8859-1" # and mingw32 uses said silly CRT -$have_setlocale = 0 if $^O eq 'MSWin32' && $Config{cc} =~ /^(cl|gcc)/i; +$have_setlocale = 0 if (($^O eq 'MSWin32' || $^O eq 'NetWare') && $Config{cc} =~ /^(cl|gcc)/i); exit(0) unless $have_setlocale; my @locales; if (-x "/usr/bin/locale" && open(LOCALES, "/usr/bin/locale -a|")) { @@ -686,6 +697,32 @@ ok # Bug 20010422.005 {s//${}/; //} EXPECT -syntax error at - line 2, near "${" -syntax error at - line 2, near "//}" +syntax error at - line 2, near "${}" Execution of - aborted due to compilation errors. +######## +# Bug 20010528.007 +"\x{" +EXPECT +Missing right brace on \x{} at - line 2, within string +Execution of - aborted due to compilation errors. +######## +my $foo = Bar->new(); +my @dst; +END { + ($_ = "@dst") =~ s/\(0x.+?\)/(0x...)/; + print $_, "\n"; +} +package Bar; +sub new { + my Bar $self = bless [], Bar; + eval '$self'; + return $self; +} +sub DESTROY { + push @dst, "$_[0]"; +} +EXPECT +Bar=ARRAY(0x...) +######## +eval "a.b.c.d.e.f;sub" +EXPECT