portability to Haiku-OS for the cachepropagate-*.t tests
authorTony Cook <tony@develop-help.com>
Wed, 9 Jan 2013 04:45:09 +0000 (15:45 +1100)
committerTony Cook <tony@develop-help.com>
Wed, 9 Jan 2013 04:54:37 +0000 (15:54 +1100)
which:
- defines but doesn't implement SO_TYPE
- doesn't support datagram unix sockets

dist/IO/t/cachepropagate-udp.t
dist/IO/t/cachepropagate-unix.t

index 91cff37..6cf1132 100644 (file)
@@ -26,9 +26,13 @@ my $new = IO::Socket::INET->new_from_fd($listener->fileno(), 'r+');
 is($new->sockdomain(), $d, 'domain match');
 SKIP: {
     skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+    skip "SO_PROTOCOL defined but not implemented", 1
+       if !defined $new->sockopt(Socket::SO_PROTOCOL);
     is($new->protocol(), $p, 'protocol match');
 }
 SKIP: {
     skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+    skip "SO_TYPE defined but not implemented", 1
+       if !defined $new->sockopt(Socket::SO_TYPE);
     is($new->socktype(), $s, 'type match');
 }
index 42a8dc8..30c8473 100644 (file)
@@ -62,27 +62,31 @@ SKIP: {
 }
 
 undef $TODO;
-# now test datagram sockets:
-$listener = IO::Socket::UNIX->new(Type => SOCK_DGRAM,
-                                 Local => $socketpath);
-ok(defined($listener), 'datagram socket created');
-
-$p = $listener->protocol();
-ok(defined($p), 'protocol defined');
-$d = $listener->sockdomain();
-ok(defined($d), 'domain defined');
-$s = $listener->socktype();
-ok(defined($s), 'type defined');
-
-my $new = IO::Socket::UNIX->new_from_fd($listener->fileno(), 'r+');
-
-is($new->sockdomain(), $d, 'domain match');
-SKIP: {
-    skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
-    is($new->protocol(), $p, 'protocol match');
-}
 SKIP: {
-    skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
-    is($new->socktype(), $s, 'type match');
+    skip "datagram unix sockets not supported on $^O", 7
+      if $^O eq "haiku";
+    # now test datagram sockets:
+    $listener = IO::Socket::UNIX->new(Type => SOCK_DGRAM,
+                                     Local => $socketpath);
+    ok(defined($listener), 'datagram socket created');
+
+    $p = $listener->protocol();
+    ok(defined($p), 'protocol defined');
+    $d = $listener->sockdomain();
+    ok(defined($d), 'domain defined');
+    $s = $listener->socktype();
+    ok(defined($s), 'type defined');
+
+    my $new = IO::Socket::UNIX->new_from_fd($listener->fileno(), 'r+');
+
+    is($new->sockdomain(), $d, 'domain match');
+    SKIP: {
+      skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+      is($new->protocol(), $p, 'protocol match');
+    }
+    SKIP: {
+      skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+      is($new->socktype(), $s, 'type match');
+    }
 }
 unlink($socketpath);