From 115f23dead3109d63686daaca7c2952f5432c583 Mon Sep 17 00:00:00 2001 From: Richard Hansen Date: Fri, 10 Jan 2025 17:04:38 -0500 Subject: [PATCH] tests: Option to select which log messages to capture --- t/lib/ddclient/t/Logger.pm | 26 +++++++++++++++++++++++--- t/protocol_directnic.pl | 2 +- t/protocol_dyndns2.pl | 2 +- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/t/lib/ddclient/t/Logger.pm b/t/lib/ddclient/t/Logger.pm index f4a1f30..5d41949 100644 --- a/t/lib/ddclient/t/Logger.pm +++ b/t/lib/ddclient/t/Logger.pm @@ -2,18 +2,38 @@ package ddclient::t::Logger; BEGIN { eval { require 'ddclient'; } or BAIL_OUT($@); } use parent qw(-norequire ddclient::Logger); +{ + package ddclient::t::LoggerAbort; + use overload '""' => qw(stringify); + sub new { + my ($class, %args) = @_; + return bless(\%args, $class); + } + sub stringify { + return 'logged a FATAL message'; + } +} + sub new { - my ($class, $parent) = @_; + my ($class, $parent, $labelre) = @_; my $self = $class->SUPER::new(undef, $parent); $self->{logs} = []; + $self->{_labelre} = $labelre; return $self; } sub _log { my ($self, $args) = @_; - push(@{$self->{logs}}, $args) - if ($args->{label} // '') =~ qr/^(?:WARNING|FATAL|SUCCESS|FAILED)$/; + my $lre = $self->{_labelre}; + my $lbl = $args->{label}; + push(@{$self->{logs}}, $args) if !defined($lre) || (defined($lbl) && $lbl =~ $lre); return $self->SUPER::_log($args); } +sub _abort { + my ($self) = @_; + push(@{$self->{logs}}, 'aborted'); + die(ddclient::t::LoggerAbort->new()); +} + 1; diff --git a/t/protocol_directnic.pl b/t/protocol_directnic.pl index 967e182..bc96152 100644 --- a/t/protocol_directnic.pl +++ b/t/protocol_directnic.pl @@ -133,7 +133,7 @@ for my $tc (@test_cases) { diag('=============================================================================='); local $ddclient::globals{debug} = 1; local $ddclient::globals{verbose} = 1; - my $l = ddclient::t::Logger->new($ddclient::_l); + my $l = ddclient::t::Logger->new($ddclient::_l, qr/^(?:WARNING|FATAL|SUCCESS|FAILED)$/); local %ddclient::config = %{$tc->{cfg}}; local %ddclient::recap; { diff --git a/t/protocol_dyndns2.pl b/t/protocol_dyndns2.pl index 749eddc..a5091cb 100644 --- a/t/protocol_dyndns2.pl +++ b/t/protocol_dyndns2.pl @@ -230,7 +230,7 @@ for my $tc (@test_cases) { diag('=============================================================================='); local $ddclient::globals{debug} = 1; local $ddclient::globals{verbose} = 1; - my $l = ddclient::t::Logger->new($ddclient::_l); + my $l = ddclient::t::Logger->new($ddclient::_l, qr/^(?:WARNING|FATAL|SUCCESS|FAILED)$/); local %ddclient::config; local %ddclient::recap; $ddclient::config{$_} = {