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/nntpd: test for wide characters and UTF-8 mangling
Date: Sat, 14 May 2016 01:47:39 +0000	[thread overview]
Message-ID: <20160514014739.GA7773@dcvr.yhbt.net> (raw)
In-Reply-To: <20160514012634.2990-1-e@80x24.org>

We'll need to test non-UTF-8 messages at some point, too.
There are lots of legacy-encoded messages in old archives
and I would not bet we behave sanely w.r.t. those.
---
 t/nntpd.t | 36 ++++++++++++++++++++++--------------
 1 file changed, 22 insertions(+), 14 deletions(-)

diff --git a/t/nntpd.t b/t/nntpd.t
index a9df36d..60cf893 100644
--- a/t/nntpd.t
+++ b/t/nntpd.t
@@ -49,14 +49,16 @@ END { kill 'TERM', $pid if defined $pid };
 	# ensure successful message delivery
 	{
 		my $mime = Email::MIME->new(<<EOF);
-From: Me <me\@example.com>
-To: You <you\@example.com>
+To: =?utf-8?Q?El=C3=A9anor?= <you\@example.com>
+From: =?utf-8?Q?El=C3=A9anor?= <me\@example.com>
 Cc: $addr
 Message-Id: <nntp\@example.com>
-Subject: hihi
+Content-Type: text/plain; charset=utf-8
+Subject: Testing for =?utf-8?Q?El=C3=A9anor?=
 Date: Thu, 01 Jan 1970 06:06:06 +0000
+Content-Transfer-Encoding: 8bit
 
-nntp
+This is a test message for El\xc3\xa9anor
 EOF
 		$mime->header_set('List-Id', "<$addr>");
 		$len = length($mime->as_string);
@@ -103,10 +105,10 @@ EOF
 	my $mid = '<nntp@example.com>';
 	my %xhdr = (
 		'message-id' => $mid,
-		'subject' => 'hihi',
+		subject => "Testing for El\xc3\xa9anor",
 		'date' => 'Thu, 01 Jan 1970 06:06:06 +0000',
-		'from' => 'Me <me@example.com>',
-		'to' => 'You <you@example.com>',
+		'from' => "El\xc3\xa9anor <me\@example.com>",
+		'to' => "El\xc3\xa9anor <you\@example.com>",
 		'cc' => $addr,
 		'xref' => "example.com $group:1"
 	);
@@ -123,14 +125,13 @@ EOF
 			  "$k by article number works");
 		is_deeply($n->xhdr("$k 1-"), { 1 => $v },
 			  "$k by article range works");
-		next;
 		$buf = '';
 		syswrite($s, "HDR $k $mid\r\n");
 		do {
 			sysread($s, $buf, 4096, length($buf));
 		} until ($buf =~ /\r\n\.\r\n\z/);
 		my @r = split("\r\n", $buf);
-		like($r[0], qr/\A224 /, '224 response for HDR');
+		like($r[0], qr/\A225 /, '225 response for HDR');
 		is($r[1], "0 $v", 'got expected response for HDR');
 	}
 
@@ -143,8 +144,8 @@ EOF
 	}
 
 	is_deeply($n->xover('1-'), {
-		'1' => ['hihi',
-			'Me <me@example.com>',
+		'1' => ["Testing for El\xc3\xa9anor",
+			"El\xc3\xa9anor <me\@example.com>",
 			'Thu, 01 Jan 1970 06:06:06 +0000',
 			'<nntp@example.com>',
 			'',
@@ -152,8 +153,8 @@ EOF
 			'1' ] }, "XOVER range works");
 
 	is_deeply($n->xover('1'), {
-		'1' => ['hihi',
-			'Me <me@example.com>',
+		'1' => ["Testing for El\xc3\xa9anor",
+			"El\xc3\xa9anor <me\@example.com>",
 			'Thu, 01 Jan 1970 06:06:06 +0000',
 			'<nntp@example.com>',
 			'',
@@ -168,7 +169,8 @@ EOF
 		} until ($buf =~ /\r\n\.\r\n\z/);
 		my @r = split("\r\n", $buf);
 		like($r[0], qr/^224 /, 'got 224 response for OVER');
-		is($r[1], "0\thihi\tMe <me\@example.com>\t" .
+		is($r[1], "0\tTesting for El\xc3\xa9anor\t" .
+			"El\xc3\xa9anor <me\@example.com>\t" .
 			"Thu, 01 Jan 1970 06:06:06 +0000\t" .
 			"$mid\t\t$len\t1", 'OVER by Message-ID works');
 		is($r[2], '.', 'correctly terminated response');
@@ -199,7 +201,13 @@ EOF
 	}
 
 	is($pid, waitpid($pid, 0), 'nntpd exited successfully');
+	my $eout = eval {
+		local $/;
+		open my $fh, '<', $err or die "open $err failed: $!";
+		<$fh>;
+	};
 	is($?, 0, 'no error in exited process');
+	unlike($eout, qr/wide/i, 'no Wide character warnings');
 }
 
 done_testing();

      reply	other threads:[~2016-05-14  1:47 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-14  1:26 [PATCH] t/nntpd: avoid fork+exec for search indexing Eric Wong
2016-05-14  1:47 ` Eric Wong [this message]

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=20160514014739.GA7773@dcvr.yhbt.net \
    --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).