tests: Refine module loads

* Wrap all conditional loads in `BEGIN {}` to be closer to the
    behavior of `use`.
  * Add missing `Test::Warnings`, `HTTP::Request` loads.
  * Sort by module name, except load `Test::More` first and
    `Test::Warnings` immediately after to maximize checking
    effectiveness.
  * Return truthy from `eval` block to prevent the `or` case from
    executing if the loaded module does not have a final truthy
    statement.  (Except for `ddclient` because we want to test that it
    does have a final truthy statement.)
This commit is contained in:
Richard Hansen 2024-09-05 20:28:37 -04:00
parent dd7ad1ccf4
commit 9c7c0e55c1
12 changed files with 40 additions and 43 deletions

View file

@ -1,6 +1,6 @@
use Test::More; use Test::More;
SKIP: { eval { require Test::Warnings; } or skip($@, 1); } BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } }
eval { require 'ddclient'; } or BAIL_OUT($@); BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); }
my $got_host; my $got_host;
my $builtinfw = 't/builtinfw_query.pl'; my $builtinfw = 't/builtinfw_query.pl';

View file

@ -1,7 +1,7 @@
use Test::More; use Test::More;
BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } }
BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); }
use ddclient::t; use ddclient::t;
SKIP: { eval { require Test::Warnings; } or skip($@, 1); }
eval { require 'ddclient'; } or BAIL_OUT($@);
subtest "get_default_interface tests" => sub { subtest "get_default_interface tests" => sub {
for my $sample (@ddclient::t::routing_samples) { for my $sample (@ddclient::t::routing_samples) {

View file

@ -1,8 +1,8 @@
use Test::More; use Test::More;
eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@); BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } }
SKIP: { eval { require Test::Warnings; } or skip($@, 1); } BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); }
eval { require 'ddclient'; } or BAIL_OUT($@); BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); }
my $has_http_daemon_ssl = eval { require HTTP::Daemon::SSL; }; my $has_http_daemon_ssl = eval { require HTTP::Daemon::SSL; 1; };
my $ipv6_supported = eval { my $ipv6_supported = eval {
require IO::Socket::IP; require IO::Socket::IP;
my $ipv6_socket = IO::Socket::IP->new( my $ipv6_socket = IO::Socket::IP->new(

View file

@ -1,9 +1,8 @@
use Test::More; use Test::More;
eval { require JSON::PP; } or plan(skip_all => $@); BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } }
JSON::PP->import(qw(encode_json)); BEGIN { eval { require JSON::PP; 1; } or plan(skip_all => $@); JSON::PP->import(); }
eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@); BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); }
SKIP: { eval { require Test::Warnings; } or skip($@, 1); } BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); }
eval { require 'ddclient'; } or BAIL_OUT($@);
ddclient::load_json_support('directnic'); ddclient::load_json_support('directnic');

View file

@ -1,9 +1,9 @@
use Test::More; use Test::More;
eval { require JSON::PP; } or plan(skip_all => $@); BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } }
JSON::PP->import(qw(encode_json decode_json)); BEGIN { eval { require JSON::PP; 1; } or plan(skip_all => $@); JSON::PP->import(); }
eval { require 'ddclient'; } or BAIL_OUT($@); BEGIN { eval { require LWP::UserAgent; 1; } or plan(skip_all => $@); }
eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@); BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); }
eval { require LWP::UserAgent; } or plan(skip_all => $@); BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); }
ddclient::load_json_support('dnsexit2'); ddclient::load_json_support('dnsexit2');

View file

@ -1,9 +1,9 @@
use Test::More; use Test::More;
use Scalar::Util qw(blessed); BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } }
use MIME::Base64; use MIME::Base64;
eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@); use Scalar::Util qw(blessed);
SKIP: { eval { require Test::Warnings; } or skip($@, 1); } BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); }
eval { require 'ddclient'; } or BAIL_OUT($@); BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); }
my $httpd = ddclient::Test::Fake::HTTPD->new(); my $httpd = ddclient::Test::Fake::HTTPD->new();
$httpd->run(sub { $httpd->run(sub {

View file

@ -1,7 +1,7 @@
use Test::More; use Test::More;
BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } }
use File::Temp; use File::Temp;
SKIP: { eval { require Test::Warnings; } or skip($@, 1); } BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); }
eval { require 'ddclient'; } or BAIL_OUT($@);
local $ddclient::globals{debug} = 1; local $ddclient::globals{debug} = 1;
local $ddclient::globals{verbose} = 1; local $ddclient::globals{verbose} = 1;

View file

@ -1,7 +1,7 @@
use Test::More; use Test::More;
eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@); BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } }
SKIP: { eval { require Test::Warnings; } or skip($@, 1); } BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); }
eval { require 'ddclient'; } or BAIL_OUT($@); BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); }
my $ipv6_supported = eval { my $ipv6_supported = eval {
require IO::Socket::IP; require IO::Socket::IP;
my $ipv6_socket = IO::Socket::IP->new( my $ipv6_socket = IO::Socket::IP->new(

View file

@ -1,10 +1,8 @@
use Test::More; use Test::More;
eval { BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } }
require ddclient::Test::Fake::HTTPD; BEGIN { eval { require HTTP::Daemon::SSL; 1; } or plan(skip_all => $@); }
require HTTP::Daemon::SSL; BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); }
} or plan(skip_all => $@); BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); }
SKIP: { eval { require Test::Warnings; } or skip($@, 1); }
eval { require 'ddclient'; } or BAIL_OUT($@);
my $ipv6_supported = eval { my $ipv6_supported = eval {
require IO::Socket::IP; require IO::Socket::IP;
my $ipv6_socket = IO::Socket::IP->new( my $ipv6_socket = IO::Socket::IP->new(

View file

@ -1,12 +1,12 @@
use Test::More; use Test::More;
BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } }
use File::Temp; use File::Temp;
BEGIN { eval { require HTTP::Request; 1; } or plan(skip_all => $@); }
BEGIN { eval { require JSON::PP; 1; } or plan(skip_all => $@); JSON::PP->import(); }
use List::Util qw(max); use List::Util qw(max);
use Scalar::Util qw(refaddr); use Scalar::Util qw(refaddr);
eval { require JSON::PP; } or plan(skip_all => $@); BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); }
JSON::PP->import(qw(decode_json encode_json)); BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); }
eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@);
SKIP: { eval { require Test::Warnings; } or skip($@, 1); }
eval { require 'ddclient'; } or BAIL_OUT($@);
my $ipv6_supported = eval { my $ipv6_supported = eval {
require IO::Socket::IP; require IO::Socket::IP;
my $ipv6_socket = IO::Socket::IP->new( my $ipv6_socket = IO::Socket::IP->new(

View file

@ -1,8 +1,8 @@
use Test::More; use Test::More;
BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } }
use Scalar::Util qw(blessed); use Scalar::Util qw(blessed);
eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@); BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); }
SKIP: { eval { require Test::Warnings; } or skip($@, 1); } BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); }
eval { require 'ddclient'; } or BAIL_OUT($@);
my $ipv6_supported = eval { my $ipv6_supported = eval {
require IO::Socket::IP; require IO::Socket::IP;
my $ipv6_socket = IO::Socket::IP->new( my $ipv6_socket = IO::Socket::IP->new(

View file

@ -1,7 +1,7 @@
use Test::More; use Test::More;
BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } }
BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); }
use re qw(is_regexp); use re qw(is_regexp);
SKIP: { eval { require Test::Warnings; } or skip($@, 1); }
eval { require 'ddclient'; } or BAIL_OUT($@);
my %variable_collections = ( my %variable_collections = (
map({ ($_ => $ddclient::cfgvars{$_}) } grep($_ ne 'merged', keys(%ddclient::cfgvars))), map({ ($_ => $ddclient::cfgvars{$_}) } grep($_ ne 'merged', keys(%ddclient::cfgvars))),