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