xref: /openbsd-src/gnu/usr.bin/perl/t/op/exec.t (revision b2ea75c1b17e1a9a339660e7ed45cd24946b230e)
1#!./perl
2
3$| = 1;				# flush stdout
4
5$ENV{LC_ALL}   = 'C';		# Forge English error messages.
6$ENV{LANGUAGE} = 'C';		# Ditto in GNU.
7
8if ($^O eq 'MSWin32') {
9    # XXX the system tests could be written to use ./perl and so work on Win32
10    print "1..0 # Skip: shh, win32\n";
11    exit(0);
12}
13
14print "1..8\n";
15
16if ($^O ne 'os2') {
17  print "not ok 1\n" if system "echo ok \\1";	# shell interpreted
18}
19else {
20  print "ok 1 # skipped: bug/feature of pdksh\n"; # shell interpreted
21}
22print "not ok 2\n" if system "echo ok 2";	# split and directly called
23print "not ok 3\n" if system "echo", "ok", "3"; # directly called
24
25# these should probably be rewritten to match the examples in perlfunc.pod
26if (system "true") {print "not ok 4\n";} else {print "ok 4\n";}
27
28if ($^O eq 'mpeix') {
29    print "ok 5 # skipped: status broken on MPE/iX\n";
30} else {
31    if ((system "/bin/sh -c 'exit 1'") != 256) { print "not "; }
32    print "ok 5\n";
33}
34
35$rc = system "lskdfj";
36if ($rc == 255 << 8 or $rc == -1 and
37     (
38      $! == 2 or
39      $! =~ /\bno\b.*\bfile/i or
40      $! == 13 or
41      $! =~ /permission denied/i
42     )
43   )
44 {print "ok 6\n";} else {print "not ok 6\n";}
45
46unless (exec "lskdjfalksdjfdjfkls") {print "ok 7\n";} else {print "not ok 7\n";}
47
48exec "echo","ok","8";
49