This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: Make Passive mode the default for Net::FTP
[perl5.git] / lib / Net / hostent.t
index c3a1219..2616b56 100644 (file)
@@ -3,70 +3,89 @@
 BEGIN {
     chdir 't' if -d 't';
     @INC = '../lib';
+}
+
+use Test::More;
+
+BEGIN {
     require Config; import Config;
     if ($Config{'extensions'} !~ /\bSocket\b/ && 
-        !(($^O eq 'VMS') && $Config{d_socket})) {
-       print "1..0 # Test uses Socket, Socket not built\n";
-       exit 0;
+        !(($^O eq 'VMS') && $Config{d_socket})) 
+    {
+       plan skip_all => "Test uses Socket, Socket not built";
+    }
+    if ($^O eq 'MacOS' || ($^O eq 'irix' && $Config{osvers} == 5)) {
+       plan skip_all => "Test relies on resolution of localhost, fails on $^O ($Config{osvers})";
     }
 }
 
-BEGIN { $| = 1; print "1..7\n"; }
-
-END {print "not ok 1\n" unless $loaded;}
+use Test::More tests => 7;
 
-use Net::hostent;
+BEGIN { use_ok 'Net::hostent' }
 
-$loaded = 1;
-print "ok 1\n";
+# Remind me to add this to Test::More.
+sub DIE {
+    print "# @_\n";
+    exit 1;
+}
 
 # test basic resolution of localhost <-> 127.0.0.1
 use Socket;
 
 my $h = gethost('localhost');
-print +(defined $h ? '' : 'not ') . "ok 2\n";
-my $i = gethostbyaddr(inet_aton("127.0.0.1"));
-print +(!defined $i ? 'not ' : '') . "ok 3\n";
+ok(defined $h,  "gethost('localhost')") ||
+  DIE("Can't continue without working gethost: $!");
 
-print "not " if inet_ntoa($h->addr) ne "127.0.0.1";
-print "ok 4\n";
+is( inet_ntoa($h->addr), "127.0.0.1",   'addr from gethost' );
 
-print "not " if inet_ntoa($i->addr) ne "127.0.0.1";
-print "ok 5\n";
+my $i = gethostbyaddr(inet_aton("127.0.0.1"));
+ok(defined $i,  "gethostbyaddr('127.0.0.1')") || 
+  DIE("Can't continue without working gethostbyaddr: $!");
+
+is( inet_ntoa($i->addr), "127.0.0.1",   'addr from gethostbyaddr' );
 
 # need to skip the name comparisons on Win32 because windows will
 # return the name of the machine instead of "localhost" when resolving
 # 127.0.0.1 or even "localhost"
 
-# VMS returns "LOCALHOST" under tcp/ip services V4.1 ECO 2, possibly others
-# OS/390 returns localhost.YADDA.YADDA
-
-if ($^O eq 'MSWin32' or $^O eq 'NetWare' or $^O eq 'cygwin') {
-  print "ok $_ # skipped on win32\n" for (6,7);
-} else {
-  my $in_alias;
-  unless ($h->name =~ /^localhost(?:\..+)?$/i) {
-    foreach (@{$h->aliases}) {
-      if (/^localhost(?:\..+)?$/i) {
-       $in_alias = 1;
-       last;
-      }
+# - VMS returns "LOCALHOST" under tcp/ip services V4.1 ECO 2, possibly others
+# - OS/390 returns localhost.YADDA.YADDA
+
+SKIP: {
+    skip "Windows will return the machine name instead of 'localhost'", 2
+      if $^O eq 'MSWin32' or $^O eq 'NetWare' or $^O eq 'cygwin';
+
+    print "# name = " . $h->name . ", aliases = " . join (",", @{$h->aliases}) . "\n";
+
+    my $in_alias;
+    unless ($h->name =~ /^localhost(?:\..+)?$/i) {
+        foreach (@{$h->aliases}) {
+            if (/^localhost(?:\..+)?$/i) {
+                $in_alias = 1;
+                last;
+            }
+        }
+       ok( $in_alias );
+    } else {
+       ok( 1 );
+    }
+    
+    if ($in_alias) {
+        # If we found it in the aliases before, expect to find it there again.
+        foreach (@{$h->aliases}) {
+            if (/^localhost(?:\..+)?$/i) {
+                # This time, clear the flag if we see "localhost"
+                undef $in_alias;
+                last;
+            }
+        }
+    } 
+
+    if( $in_alias ) {
+        like( $i->name, qr/^localhost(?:\..+)?$/i );
     }
-    print "not " unless $in_alias;
-  } # Else we found it as the hostname
-  print "ok 6 # ",$h->name, " ", join (",", @{$h->aliases}), "\n";
-
-  if ($in_alias) {
-    # If we found it in the aliases before, expect to find it there again.
-    foreach (@{$h->aliases}) {
-      if (/^localhost(?:\..+)?$/i) {
-       undef $in_alias; # This time, clear the flag if we see "localhost"
-       last;
-      }
+    else {
+        ok( !$in_alias );
+        print "# " . $h->name . " " . join (",", @{$h->aliases}) . "\n";
     }
-    print "not " if $in_alias;
-  } else {
-    print "not " unless $i->name =~ /^localhost(?:\..+)?$/i;
-  }
-  print "ok 7 # ",$h->name, " ", join (",", @{$h->aliases}), "\n";
 }