Mirror #2384.
[p5sagit/p5-mst-13.2.git] / t / lib / io_unix.t
1
2 #!./perl
3
4 BEGIN {
5     unless(grep /blib/, @INC) {
6         chdir 't' if -d 't';
7         @INC = '../lib' if -d '../lib';
8     }
9 }
10
11 use Config;
12
13 BEGIN {
14     if(-d "lib" && -f "TEST") {
15         if ( ($Config{'extensions'} !~ /\bSocket\b/ ||
16               $Config{'extensions'} !~ /\bIO\b/)    &&
17               !(($^O eq 'VMS') && $Config{d_socket})) {
18             print "1..0\n";
19             exit 0;
20         }
21     }
22 }
23
24 $PATH = "/tmp/sock-$$";
25
26 # Test if we can create the file within the tmp directory
27 if (-e $PATH or not open(TEST, ">$PATH")) {
28     print "1..0\n";
29     exit 0;
30 }
31 close(TEST);
32 unlink($PATH) or die "Can't unlink $PATH: $!";
33
34 # Start testing
35 $| = 1;
36 print "1..5\n";
37
38 use IO::Socket;
39
40 $listen = IO::Socket::UNIX->new(Local=>$PATH, Listen=>0) || die "$!";
41 print "ok 1\n";
42
43 if($pid = fork()) {
44
45     $sock = $listen->accept();
46     print "ok 2\n";
47
48     print $sock->getline();
49
50     print $sock "ok 4\n";
51
52     $sock->close;
53
54     waitpid($pid,0);
55     unlink($PATH) || warn "Can't unlink $PATH: $!";
56
57     print "ok 5\n";
58
59 } elsif(defined $pid) {
60
61     $sock = IO::Socket::UNIX->new(Peer => $PATH) or die "$!";
62
63     print $sock "ok 3\n";
64
65     print $sock->getline();
66
67     $sock->close;
68
69     exit;
70 } else {
71  die;
72 }