Another shot at purging `echo` from the base tests. This time we move the <<`EOF` test from t/base/lex.t into t/op/exec.t where its safer to use things like t/test.pl.
On the way I switched exec.t over to using which_perl(). --- t/op/exec.t Sat Dec 1 16:44:03 2001 +++ t/op/exec.t Thu Dec 6 22:54:32 2001 @@ -3,6 +3,7 @@ BEGIN: { chdir 't' if -d 't'; @INC = ('../lib'); + require './test.pl'; } # supress VMS whinging about bad execs. @@ -13,35 +14,36 @@ $ENV{LC_ALL} = 'C'; # Forge English error messages. $ENV{LANGUAGE} = 'C'; # Ditto in GNU. -require './test.pl'; -plan(tests => 12); +plan(tests => 14); + +my $Perl = which_perl(); my $exit; SKIP: { skip("bug/feature of pdksh", 2) if $^O eq 'os2'; - $exit = system qq{$^X -le "print q{ok 1 - interpreted system(EXPR)"}}; + $exit = system qq{$Perl -le "print q{ok 1 - interpreted system(EXPR)"}}; next_test(); is( $exit, 0, ' exited 0' ); } -$exit = system qq{$^X -le "print q{ok 3 - split & direct call system(EXPR)"}}; +$exit = system qq{$Perl -le "print q{ok 3 - split & direct call system(EXPR)"}}; next_test(); is( $exit, 0, ' exited 0' ); # On VMS you need the quotes around the program or it won't work. # On Unix its the opposite. my $quote = $^O eq 'VMS' ? '"' : ''; -$exit = system $^X, '-le', +$exit = system $Perl, '-le', "${quote}print q{ok 5 - system(PROG, LIST)}${quote}"; next_test(); is( $exit, 0, ' exited 0' ); -is( system(qq{$^X -e "exit 0"}), 0, 'Explicit exit of 0' ); +is( system(qq{$Perl -e "exit 0"}), 0, 'Explicit exit of 0' ); my $exit_one = $^O eq 'VMS' ? 4 << 8 : 1 << 8; -is( system(qq{$^X "-I../lib" -e "use vmsish qw(hushed); exit 1"}), $exit_one, +is( system(qq{$Perl "-I../lib" -e "use vmsish qw(hushed); exit 1"}), $exit_one, 'Explicit exit of 1' ); @@ -56,6 +58,13 @@ printf "# \$! eq %d, '%s'\n", $!, $!; } + +is( `$Perl -le "print 'ok'"`, "ok\n", 'basic ``' ); +is( <<`END`, "ok\n", '<<`HEREDOC`' ); +$Perl -le "print 'ok'" +END + + TODO: { if( $^O =~ /Win32/ ) { print "not ok 11 - exec failure doesn't terminate process # TODO Win32 exec failure waits for user input\n"; @@ -66,5 +75,6 @@ "exec failure doesn't terminate process"); } -exec $^X, '-le', qq{${quote}print 'ok 12 - exec PROG, LIST'${quote}}; +my $test = curr_test(); +exec $Perl, '-le', qq{${quote}print 'ok $test - exec PROG, LIST'${quote}}; fail("This should never be reached if the exec() worked"); --- t/base/lex.t Thu Dec 6 16:50:38 2001 +++ t/base/lex.t Thu Dec 6 14:46:56 2001 @@ -53,8 +53,8 @@ EOF EOE -print <<`EOS` . <<\EOF; -echo ok 12 +print <<'EOS' . <<\EOF; +ok 12 - make sure single quotes are honored \nnot ok EOS ok 13 EOF -- Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/ Perl Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One Here's hoping you don't become a robot!