From: Roderick Schertler Date: Mon, 6 Jan 1997 15:39:52 +0000 (-0500) Subject: More magic variable tests X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=90ce63d569d0e11f6675586fb55569c7fb6eb460;p=p5sagit%2Fp5-mst-13.2.git More magic variable tests private-msgid: <7043.852565192@eeyore.ibcinc.com> --- diff --git a/t/harness b/t/harness index c98d91e..5b460f3 100755 --- a/t/harness +++ b/t/harness @@ -9,6 +9,7 @@ use lib '../lib'; use Test::Harness; $Test::Harness::switches = ""; # Too much noise otherwise +$Test::Harness::verbose = shift if @ARGV && $ARGV[0] eq '-v'; @tests = @ARGV; @tests = <*/*.t> unless @tests; diff --git a/t/op/magic.t b/t/op/magic.t index b46dade..a050510 100755 --- a/t/op/magic.t +++ b/t/op/magic.t @@ -2,17 +2,35 @@ # $RCSfile: magic.t,v $$Revision: 4.1 $$Date: 92/08/07 18:28:05 $ -$| = 1; # command buffering +BEGIN { + $^W = 1; + $| = 1; + chdir 't' if -d 't'; + @INC = '../lib'; + $SIG{__WARN__} = sub { die @_ }; +} -print "1..6\n"; +sub ok { + my ($n, $result, $info) = @_; + if ($result) { + print "ok $n\n"; + } + else { + print "not ok $n\n"; + print "# $info\n" if $info; + } +} + +print "1..28\n"; eval '$ENV{"foo"} = "hi there";'; # check that ENV is inited inside eval -if (`echo \$foo` eq "hi there\n") {print "ok 1\n";} else {print "not ok 1\n";} +ok 1, `echo \$foo` eq "hi there\n"; unlink 'ajslkdfpqjsjfk'; $! = 0; -open(foo,'ajslkdfpqjsjfk'); -if ($!) {print "ok 2\n";} else {print "not ok 2\n";} +open(FOO,'ajslkdfpqjsjfk'); +ok 2, $!, $!; +close FOO; # just mention it, squelch used-only-once # the next tests are embedded inside system simply because sh spits out # a newline onto stderr when a child process kills itself with SIGINT. @@ -38,8 +56,63 @@ END @val1 = @ENV{keys(%ENV)}; # can we slice ENV? @val2 = values(%ENV); +ok 5, join(':',@val1) eq join(':',@val2); +ok 6, @val1 > 1; + +# regex vars +'foobarbaz' =~ /b(a)r/; +ok 7, $` eq 'foo', $`; +ok 8, $& eq 'bar', $&; +ok 9, $' eq 'baz', $'; +ok 10, $+ eq 'a', $+; + +# $" +@a = qw(foo bar baz); +ok 11, "@a" eq "foo bar baz", "@a"; +{ + local $" = ','; + ok 12, "@a" eq "foo,bar,baz", "@a"; +} -print join(':',@val1) eq join(':',@val2) ? "ok 5\n" : "not ok 5\n"; +# $; +%h = (); +$h{'foo', 'bar'} = 1; +ok 13, (keys %h)[0] eq "foo\034bar", (keys %h)[0]; +{ + local $; = 'x'; + %h = (); + $h{'foo', 'bar'} = 1; + ok 14, (keys %h)[0] eq 'fooxbar', (keys %h)[0]; +} -print @val1 > 1 ? "ok 6\n" : "not ok 6\n"; +# $?, $@, $$ +system 'true'; +ok 15, $? == 0, $?; +system 'false'; +ok 16, $? != 0, $?; + +eval { die "foo\n" }; +ok 17, $@ eq "foo\n", $@; + +ok 18, $$ > 0, $$; + +# $^X and $0 +$script = './show-shebang'; +ok 19, open(SCRIPT, ">$script"), $!; +ok 20, print(SCRIPT <<'EOF'), $!; +#!./perl +print "\$^X is $^X, \$0 is $0\n"; +EOF +ok 21, close(SCRIPT), $!; +ok 22, chmod(0755, $script), $!; +$s = "\$^X is ./perl, \$0 is $script\n"; +$_ = `$script`; +ok 23, $_ eq $s, ":$_:"; +$_ = `./perl $script`; +ok 24, $_ eq $s, ":$_:"; +ok 25, unlink($script), $!; +# $], $^O, $^T +ok 26, $] >= 5.00319, $]; +ok 27, $^O; +ok 28, $^T > 850000000, $^T;