unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
* [PATCH] t/nntp.t: attempt to quiet spurious uninitialized warnings
@ 2023-08-17  7:23 Eric Wong
  0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2023-08-17  7:23 UTC (permalink / raw)
  To: meta

When running via t/run.perl ("make check-run") to reduce test
startup time, t/nntp.t occasionally hits uninitialized variable
warnings in the quote_str sub.  I can't reproduce these
reliably, but scoping subs in tests reduces the chance of
conflict when we reuse interpreters.
---
 t/nntp.t | 67 +++++++++++++++++++++++++++-----------------------------
 1 file changed, 32 insertions(+), 35 deletions(-)

diff --git a/t/nntp.t b/t/nntp.t
index 655af398..0d3384d7 100644
--- a/t/nntp.t
+++ b/t/nntp.t
@@ -1,72 +1,69 @@
-# Copyright (C) 2015-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
-use strict;
-use warnings;
-use Test::More;
+use v5.12;
 use PublicInbox::TestCommon;
 use PublicInbox::Eml;
 require_mods(qw(DBD::SQLite Data::Dumper));
 use_ok 'PublicInbox::NNTP';
-use_ok 'PublicInbox::Inbox';
 use PublicInbox::Config;
+use POSIX qw(strftime);
 
 {
-	sub quote_str {
+	my $quote_str = sub {
 		my (undef, $s) = split(/ = /, Data::Dumper::Dumper($_[0]), 2);
 		$s =~ s/;\n//;
 		$s;
-	}
+	};
 
-	sub wm_prepare {
+	my $wm_prepare = sub {
 		my ($wm) = @_;
 		my $orig = qq{'$wm'};
 		PublicInbox::NNTP::wildmat2re($_[0]);
-		my $new = quote_str($_[0]);
+		my $new = $quote_str->($_[0]);
 		($orig, $new);
-	}
+	};
 
-	sub wildmat_like {
+	my $wildmat_like = sub {
 		my ($str, $wm) = @_;
-		my ($orig, $new) = wm_prepare($wm);
+		my ($orig, $new) = $wm_prepare->($wm);
 		like($str, $wm, "$orig matches '$str' using $new");
-	}
+	};
 
-	sub wildmat_unlike {
+	my $wildmat_unlike = sub {
 		my ($str, $wm, $check_ex) = @_;
 		if ($check_ex) {
 			use re 'eval';
 			my $re = qr/$wm/;
 			like($str, $re, "normal re with $wm matches, but ...");
 		}
-		my ($orig, $new) = wm_prepare($wm);
+		my ($orig, $new) = $wm_prepare->($wm);
 		unlike($str, $wm, "$orig does not match '$str' using $new");
-	}
+	};
 
-	wildmat_like('[foo]', '[\[foo\]]');
-	wildmat_like('any', '*');
-	wildmat_unlike('bar.foo.bar', 'foo.*');
+	$wildmat_like->('[foo]', '[\[foo\]]');
+	$wildmat_like->('any', '*');
+	$wildmat_unlike->('bar.foo.bar', 'foo.*');
 
 	# no code execution
-	wildmat_unlike('HI', '(?{"HI"})', 1);
-	wildmat_unlike('HI', '[(?{"HI"})]', 1);
+	$wildmat_unlike->('HI', '(?{"HI"})', 1);
+	$wildmat_unlike->('HI', '[(?{"HI"})]', 1);
 }
 
 {
-	sub ngpat_like {
+	my $ngpat_like = sub {
 		my ($str, $pat) = @_;
 		my $orig = $pat;
 		PublicInbox::NNTP::ngpat2re($pat);
 		like($str, $pat, "'$orig' matches '$str' using $pat");
-	}
+	};
 
-	ngpat_like('any', '*');
-	ngpat_like('a.s.r', 'a.t,a.s.r');
-	ngpat_like('a.s.r', 'a.t,a.s.*');
+	$ngpat_like->('any', '*');
+	$ngpat_like->('a.s.r', 'a.t,a.s.r');
+	$ngpat_like->('a.s.r', 'a.t,a.s.*');
 }
 
 {
-	use POSIX qw(strftime);
-	sub time_roundtrip {
+	my $time_roundtrip = sub {
 		my ($date, $time, $gmt) = @_;
 		my $m = join(' ', @_);
 		my $ts = PublicInbox::NNTP::parse_time(@_);
@@ -77,12 +74,12 @@ use PublicInbox::Config;
 		}
 		is_deeply([$d, $t], [$date, $time], "roundtripped: $m");
 		$ts;
-	}
-	my $x1 = time_roundtrip(qw(20141109 060606 GMT));
-	my $x2 = time_roundtrip(qw(141109 060606 GMT));
-	my $x3 = time_roundtrip(qw(930724 060606 GMT));
-	my $x5 = time_roundtrip(qw(710101 000000));
-	my $x6 = time_roundtrip(qw(720101 000000));
+	};
+	my $x1 = $time_roundtrip->(qw(20141109 060606 GMT));
+	my $x2 = $time_roundtrip->(qw(141109 060606 GMT));
+	my $x3 = $time_roundtrip->(qw(930724 060606 GMT));
+	my $x5 = $time_roundtrip->(qw(710101 000000));
+	my $x6 = $time_roundtrip->(qw(720101 000000));
 	SKIP: {
 		skip('YYMMDD test needs updating', 6) if (time > 0x7fffffff);
 		# our world probably ends in 2038, but if not we'll try to
@@ -90,7 +87,7 @@ use PublicInbox::Config;
 		is($x1, $x2, 'YYYYMMDD and YYMMDD parse identically');
 		is(strftime('%Y', gmtime($x3)), '1993', '930724 was in 1993');
 
-		my $epoch = time_roundtrip(qw(700101 000000 GMT));
+		my $epoch = $time_roundtrip->(qw(700101 000000 GMT));
 		is($epoch, 0, 'epoch parsed correctly');
 		ok($x6 > $x5, '1972 > 1971');
 		ok($x5 > $epoch, '1971 > Unix epoch');

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2023-08-17  7:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-17  7:23 [PATCH] t/nntp.t: attempt to quiet spurious uninitialized warnings Eric Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).