Blame t/config.t

Packit bd23c0
#!perl
Packit bd23c0
Packit bd23c0
use 5.008001;
Packit bd23c0
Packit bd23c0
use strict;
Packit bd23c0
use warnings;
Packit bd23c0
Packit bd23c0
BEGIN {
Packit bd23c0
    if (!eval { require Socket }) {
Packit bd23c0
        print "1..0 # no Socket\n"; exit 0;
Packit bd23c0
    }
Packit bd23c0
    undef *{Socket::inet_aton};
Packit bd23c0
    undef *{Socket::inet_ntoa};
Packit bd23c0
    if (ord('A') == 193 && !eval { require Convert::EBCDIC }) {
Packit bd23c0
        print "1..0 # EBCDIC but no Convert::EBCDIC\n"; exit 0;
Packit bd23c0
    }
Packit bd23c0
    $INC{'Socket.pm'} = 1;
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
package Socket;
Packit bd23c0
Packit bd23c0
sub import {
Packit bd23c0
        my $pkg = caller();
Packit bd23c0
        no strict 'refs'; ## no critic (TestingAndDebugging::ProhibitNoStrict)
Packit bd23c0
        *{ $pkg . '::inet_aton' } = \&inet_aton;
Packit bd23c0
        *{ $pkg . '::inet_ntoa' } = \&inet_ntoa;
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
my $fail = 0;
Packit bd23c0
my %names;
Packit bd23c0
Packit bd23c0
sub set_fail {
Packit bd23c0
        $fail = shift;
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
sub inet_aton {
Packit bd23c0
        return if $fail;
Packit bd23c0
        my $num = unpack('N', pack('C*', split(/\./, $_[0])));
Packit bd23c0
        $names{$num} = $_[0];
Packit bd23c0
        return $num;
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
sub inet_ntoa {
Packit bd23c0
        return if $fail;
Packit bd23c0
        return $names{$_[0]};
Packit bd23c0
}
Packit bd23c0
Packit bd23c0
package main;
Packit bd23c0
Packit bd23c0
Packit bd23c0
(my $libnet_t = __FILE__) =~ s/config.t/libnet_t.pl/;
Packit bd23c0
require $libnet_t;
Packit bd23c0
Packit bd23c0
print "1..10\n";
Packit bd23c0
Packit bd23c0
use Net::Config;
Packit bd23c0
ok( exists $INC{'Net/Config.pm'}, 'Net::Config should have been used' );
Packit bd23c0
ok( keys %NetConfig, '%NetConfig should be imported' );
Packit bd23c0
Packit bd23c0
Socket::set_fail(1);
Packit bd23c0
undef $NetConfig{'ftp_firewall'};
Packit bd23c0
is( Net::Config->requires_firewall(), 0, 
Packit bd23c0
        'requires_firewall() should return 0 without ftp_firewall defined' );
Packit bd23c0
Packit bd23c0
$NetConfig{'ftp_firewall'} = 1;
Packit bd23c0
is( Net::Config->requires_firewall('a.host.not.there'), -1,
Packit bd23c0
        '... should return -1 without a valid hostname' );
Packit bd23c0
Packit bd23c0
Socket::set_fail(0);
Packit bd23c0
delete $NetConfig{'local_netmask'};
Packit bd23c0
is( Net::Config->requires_firewall('127.0.0.1'), 0,
Packit bd23c0
        '... should return 0 without local_netmask defined' );
Packit bd23c0
Packit bd23c0
$NetConfig{'local_netmask'} = '127.0.0.1/24';
Packit bd23c0
is( Net::Config->requires_firewall('127.0.0.1'), 0,
Packit bd23c0
        '... should return false if host is within netmask' );
Packit bd23c0
is( Net::Config->requires_firewall('192.168.10.0'), 1,
Packit bd23c0
        '... should return true if host is outside netmask' );
Packit bd23c0
Packit bd23c0
# now try more netmasks
Packit bd23c0
$NetConfig{'local_netmask'} = [ '127.0.0.1/24', '10.0.0.0/8' ];
Packit bd23c0
is( Net::Config->requires_firewall('10.10.255.254'), 0,
Packit bd23c0
        '... should find success with mutiple local netmasks' );
Packit bd23c0
is( Net::Config->requires_firewall('192.168.10.0'), 1,
Packit bd23c0
        '... should handle failure with multiple local netmasks' );
Packit bd23c0
Packit bd23c0
is( \&Net::Config::is_external, \&Net::Config::requires_firewall,
Packit bd23c0
        'is_external() should be an alias for requires_firewall()' );