From 9c7c0e55c1c43c591621c554e92f5398ce269e91 Mon Sep 17 00:00:00 2001 From: Richard Hansen Date: Thu, 5 Sep 2024 20:28:37 -0400 Subject: [PATCH] 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.) --- t/builtinfw_query.pl | 4 ++-- t/get_ip_from_if.pl | 4 ++-- t/geturl_connectivity.pl | 8 ++++---- t/protocol_directnic.pl | 9 ++++----- t/protocol_dnsexit2.pl | 10 +++++----- t/protocol_dyndns2.pl | 8 ++++---- t/read_recap.pl | 4 ++-- t/skip.pl | 6 +++--- t/ssl-validate.pl | 10 ++++------ t/update_nics.pl | 10 +++++----- t/use_web.pl | 6 +++--- t/variable_defaults.pl | 4 ++-- 12 files changed, 40 insertions(+), 43 deletions(-) diff --git a/t/builtinfw_query.pl b/t/builtinfw_query.pl index a784a33..e5ea949 100644 --- a/t/builtinfw_query.pl +++ b/t/builtinfw_query.pl @@ -1,6 +1,6 @@ use Test::More; -SKIP: { eval { require Test::Warnings; } or skip($@, 1); } -eval { require 'ddclient'; } or BAIL_OUT($@); +BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } } +BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); } my $got_host; my $builtinfw = 't/builtinfw_query.pl'; diff --git a/t/get_ip_from_if.pl b/t/get_ip_from_if.pl index 1f26c48..8ff36fb 100644 --- a/t/get_ip_from_if.pl +++ b/t/get_ip_from_if.pl @@ -1,7 +1,7 @@ use Test::More; +BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } } +BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); } use ddclient::t; -SKIP: { eval { require Test::Warnings; } or skip($@, 1); } -eval { require 'ddclient'; } or BAIL_OUT($@); subtest "get_default_interface tests" => sub { for my $sample (@ddclient::t::routing_samples) { diff --git a/t/geturl_connectivity.pl b/t/geturl_connectivity.pl index d7481b4..300d9d2 100644 --- a/t/geturl_connectivity.pl +++ b/t/geturl_connectivity.pl @@ -1,8 +1,8 @@ use Test::More; -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 $has_http_daemon_ssl = eval { require HTTP::Daemon::SSL; }; +BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } } +BEGIN { 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; 1; }; my $ipv6_supported = eval { require IO::Socket::IP; my $ipv6_socket = IO::Socket::IP->new( diff --git a/t/protocol_directnic.pl b/t/protocol_directnic.pl index 0e9f981..ed13667 100644 --- a/t/protocol_directnic.pl +++ b/t/protocol_directnic.pl @@ -1,9 +1,8 @@ use Test::More; -eval { require JSON::PP; } or plan(skip_all => $@); -JSON::PP->import(qw(encode_json)); -eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@); -SKIP: { eval { require Test::Warnings; } or skip($@, 1); } -eval { require 'ddclient'; } or BAIL_OUT($@); +BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } } +BEGIN { eval { require JSON::PP; 1; } or plan(skip_all => $@); JSON::PP->import(); } +BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); } +BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); } ddclient::load_json_support('directnic'); diff --git a/t/protocol_dnsexit2.pl b/t/protocol_dnsexit2.pl index e68ab92..f145ba3 100644 --- a/t/protocol_dnsexit2.pl +++ b/t/protocol_dnsexit2.pl @@ -1,9 +1,9 @@ use Test::More; -eval { require JSON::PP; } or plan(skip_all => $@); -JSON::PP->import(qw(encode_json decode_json)); -eval { require 'ddclient'; } or BAIL_OUT($@); -eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@); -eval { require LWP::UserAgent; } or plan(skip_all => $@); +BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } } +BEGIN { eval { require JSON::PP; 1; } or plan(skip_all => $@); JSON::PP->import(); } +BEGIN { eval { require LWP::UserAgent; 1; } or plan(skip_all => $@); } +BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); } +BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); } ddclient::load_json_support('dnsexit2'); diff --git a/t/protocol_dyndns2.pl b/t/protocol_dyndns2.pl index 198363d..4635012 100644 --- a/t/protocol_dyndns2.pl +++ b/t/protocol_dyndns2.pl @@ -1,9 +1,9 @@ use Test::More; -use Scalar::Util qw(blessed); +BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } } use MIME::Base64; -eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@); -SKIP: { eval { require Test::Warnings; } or skip($@, 1); } -eval { require 'ddclient'; } or BAIL_OUT($@); +use Scalar::Util qw(blessed); +BEGIN { 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(); $httpd->run(sub { diff --git a/t/read_recap.pl b/t/read_recap.pl index b2a62c5..a243d99 100644 --- a/t/read_recap.pl +++ b/t/read_recap.pl @@ -1,7 +1,7 @@ use Test::More; +BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } } use File::Temp; -SKIP: { eval { require Test::Warnings; } or skip($@, 1); } -eval { require 'ddclient'; } or BAIL_OUT($@); +BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); } local $ddclient::globals{debug} = 1; local $ddclient::globals{verbose} = 1; diff --git a/t/skip.pl b/t/skip.pl index 4e44a81..3c63f42 100644 --- a/t/skip.pl +++ b/t/skip.pl @@ -1,7 +1,7 @@ use Test::More; -eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@); -SKIP: { eval { require Test::Warnings; } or skip($@, 1); } -eval { require 'ddclient'; } or BAIL_OUT($@); +BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } } +BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); } +BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); } my $ipv6_supported = eval { require IO::Socket::IP; my $ipv6_socket = IO::Socket::IP->new( diff --git a/t/ssl-validate.pl b/t/ssl-validate.pl index bf2265d..4d9a111 100644 --- a/t/ssl-validate.pl +++ b/t/ssl-validate.pl @@ -1,10 +1,8 @@ use Test::More; -eval { - require ddclient::Test::Fake::HTTPD; - require HTTP::Daemon::SSL; -} or plan(skip_all => $@); -SKIP: { eval { require Test::Warnings; } or skip($@, 1); } -eval { require 'ddclient'; } or BAIL_OUT($@); +BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } } +BEGIN { eval { require HTTP::Daemon::SSL; 1; } or plan(skip_all => $@); } +BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); } +BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); } my $ipv6_supported = eval { require IO::Socket::IP; my $ipv6_socket = IO::Socket::IP->new( diff --git a/t/update_nics.pl b/t/update_nics.pl index af968d7..0538a2e 100644 --- a/t/update_nics.pl +++ b/t/update_nics.pl @@ -1,12 +1,12 @@ use Test::More; +BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } } 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 Scalar::Util qw(refaddr); -eval { require JSON::PP; } or plan(skip_all => $@); -JSON::PP->import(qw(decode_json encode_json)); -eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@); -SKIP: { eval { require Test::Warnings; } or skip($@, 1); } -eval { require 'ddclient'; } or BAIL_OUT($@); +BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); } +BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); } my $ipv6_supported = eval { require IO::Socket::IP; my $ipv6_socket = IO::Socket::IP->new( diff --git a/t/use_web.pl b/t/use_web.pl index e9a9771..90be8d7 100644 --- a/t/use_web.pl +++ b/t/use_web.pl @@ -1,8 +1,8 @@ use Test::More; +BEGIN { SKIP: { eval { require Test::Warnings; 1; } or skip($@, 1); } } use Scalar::Util qw(blessed); -eval { require ddclient::Test::Fake::HTTPD; } or plan(skip_all => $@); -SKIP: { eval { require Test::Warnings; } or skip($@, 1); } -eval { require 'ddclient'; } or BAIL_OUT($@); +BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); } +BEGIN { eval { require ddclient::Test::Fake::HTTPD; 1; } or plan(skip_all => $@); } my $ipv6_supported = eval { require IO::Socket::IP; my $ipv6_socket = IO::Socket::IP->new( diff --git a/t/variable_defaults.pl b/t/variable_defaults.pl index c0e8320..8f2495d 100644 --- a/t/variable_defaults.pl +++ b/t/variable_defaults.pl @@ -1,7 +1,7 @@ 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); -SKIP: { eval { require Test::Warnings; } or skip($@, 1); } -eval { require 'ddclient'; } or BAIL_OUT($@); my %variable_collections = ( map({ ($_ => $ddclient::cfgvars{$_}) } grep($_ ne 'merged', keys(%ddclient::cfgvars))),