unofficial mirror of meta@public-inbox.org
 help / color / mirror / Atom feed
From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Subject: [PATCH] t/imap_searchqp: hopefully fix test reliability
Date: Sun, 28 Apr 2024 20:08:01 +0000	[thread overview]
Message-ID: <20240428200801.42738-1-e@80x24.org> (raw)

Localizing assignments to *STDERR doesn't seem to always work
with scalar (String) IO objects.  Fortunately, doing actual dup2
redirects always seems reliable, so do that instead of
attempting to understand why PerlIO sometimes fails with the
assignment.
---
 t/imap_searchqp.t | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/t/imap_searchqp.t b/t/imap_searchqp.t
index ff1b4535..d7840dd0 100644
--- a/t/imap_searchqp.t
+++ b/t/imap_searchqp.t
@@ -3,6 +3,8 @@
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict;
 use v5.10.1;
+use autodie qw(open seek read);
+use Fcntl qw(SEEK_SET);
 use Time::Local qw(timegm);
 use PublicInbox::TestCommon;
 require_mods(qw(-imapd));
@@ -29,12 +31,15 @@ is($q->{xap}, 'f:"b"', 'charset handled');
 $q = $parse->(qq{CHARSET WTF-8 From b});
 like($q, qr/\ANO \[/, 'bad charset rejected');
 
-for my $x ('', ' (try #2)') {
-	open my $fh, '>:scalar', \(my $buf = '') or die;
-	local *STDERR = $fh;
+{
+	open my $tmperr, '+>', undef;
+	open my $olderr, '>&', \*STDERR;
+	open STDERR, '>&', $tmperr;
 	$q = $parse->(qq{CHARSET});
-	last if is($buf, '', "nothing spewed to STDERR on bad query$x");
-	diag 'FIXME: above fails mysteriously sometimes, so we try again...';
+	open STDERR, '>&', $olderr;
+	seek $tmperr, 0, SEEK_SET;
+	read($tmperr, my $buf, -s $tmperr);
+	is($buf, '', 'nothing spewed to STDERR on bad query');
 }
 
 like($q, qr/\ABAD /, 'bad charset rejected');

             reply	other threads:[~2024-04-28 20:15 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-28 20:08 Eric Wong [this message]
2024-05-07  7:42 ` [PATCH] t/imap_searchqp: hopefully fix test reliability Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://public-inbox.org/README

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240428200801.42738-1-e@80x24.org \
    --to=e@80x24.org \
    --cc=meta@public-inbox.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).