From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Subject: [PATCH 03/11] t/cgi.t: modernizations and style updates
Date: Tue, 9 Feb 2021 07:09:29 -0100 [thread overview]
Message-ID: <20210209080937.4678-4-e@80x24.org> (raw)
In-Reply-To: <20210209080937.4678-1-e@80x24.org>
We prefer BAIL_OUT or fail to die in tests (I didn't know
BAIL_OUT existed when I started the project). We can also
depend on IO::Uncompress::Gunzip being available,
We'll keep the cgi_run wrapper since the .cgi could
use some coverage and remove the FIXME note. run_script
makes tests fast enough.
---
t/cgi.t | 84 ++++++++++++++++++++++++---------------------------------
1 file changed, 35 insertions(+), 49 deletions(-)
diff --git a/t/cgi.t b/t/cgi.t
index 3818b991..567c2ee0 100644
--- a/t/cgi.t
+++ b/t/cgi.t
@@ -1,42 +1,36 @@
+#!perl -w
# Copyright (C) 2014-2021 all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
-# FIXME: this test is too slow and most non-CGI-requirements
-# should be moved over to things which use test_psgi
use strict;
-use warnings;
-use Test::More;
-use PublicInbox::Eml;
+use v5.10.1;
use PublicInbox::TestCommon;
-use PublicInbox::Import;
+use IO::Uncompress::Gunzip qw(gunzip);
require_mods(qw(Plack::Handler::CGI Plack::Util));
+require PublicInbox::Eml;
+require PublicInbox::Import;
+require PublicInbox::Inbox;
+require PublicInbox::InboxWritable;
+require PublicInbox::Config;
my ($tmpdir, $for_destroy) = tmpdir();
my $home = "$tmpdir/pi-home";
my $pi_home = "$home/.public-inbox";
my $pi_config = "$pi_home/config";
my $maindir = "$tmpdir/main.git";
my $addr = 'test-public@example.com';
-
+PublicInbox::Import::init_bare($maindir);
{
- is(1, mkdir($home, 0755), "setup ~/ for testing");
- is(1, mkdir($pi_home, 0755), "setup ~/.public-inbox");
- PublicInbox::Import::init_bare($maindir);
-
- open my $fh, '>', "$maindir/description" or die "open: $!\n";
- print $fh "test for public-inbox\n";
- close $fh or die "close: $!\n";
- open $fh, '>>', $pi_config or die;
- print $fh <<EOF or die;
+ mkdir($home, 0755) or BAIL_OUT $!;
+ mkdir($pi_home, 0755) or BAIL_OUT $!;
+ open my $fh, '>>', $pi_config or BAIL_OUT $!;
+ print $fh <<EOF or BAIL_OUT $!;
[publicinbox "test"]
address = $addr
inboxdir = $maindir
indexlevel = basic
EOF
- close $fh or die "close: $!\n";
+ close $fh or BAIL_OUT $!;
}
-use_ok 'PublicInbox::Inbox';
-use_ok 'PublicInbox::InboxWritable';
-use_ok 'PublicInbox::Config';
my $cfg = PublicInbox::Config->new($pi_config);
my $ibx = $cfg->lookup_name('test');
my $im = PublicInbox::InboxWritable->new($ibx)->importer(0);
@@ -58,7 +52,7 @@ EOF
ok($im->add($mime), 'added initial message');
$mime->header_set('Message-ID', '<toobig@example.com>');
- $mime->body_str_set("z\n" x 1024);
+ $mime->body_set("z\n" x 1024);
ok($im->add($mime), 'added big message');
# deliver a reply, too
@@ -98,7 +92,7 @@ EOF
}
# retrieve thread as an mbox
-{
+SKIP: {
local $ENV{HOME} = $home;
my $path = "/test/blahblah\@example.com/t.mbox.gz";
my $res = cgi_run($path);
@@ -109,13 +103,10 @@ EOF
if ($indexed) {
$res = cgi_run($path);
like($res->{head}, qr/^Status: 200 /, "search returned mbox");
- eval {
- require IO::Uncompress::Gunzip;
- my $in = $res->{body};
- my $out;
- IO::Uncompress::Gunzip::gunzip(\$in => \$out);
- like($out, qr/^From /m, "From lines in mbox");
- };
+ my $in = $res->{body};
+ my $out;
+ gunzip(\$in => \$out);
+ like($out, qr/^From /m, "From lines in mbox");
$res = cgi_run('/test/toobig@example.com/');
like($res->{head}, qr/^Status: 300 /,
'did not index or return >max-size message');
@@ -123,29 +114,24 @@ EOF
'warned about skipping large OID');
} else {
like($res->{head}, qr/^Status: 501 /, "search not available");
- SKIP: { skip 'DBD::SQLite not available', 4 };
- }
-
- my $have_xml_treepp = eval { require XML::TreePP; 1 } if $indexed;
- if ($have_xml_treepp) {
- $path = "/test/blahblah\@example.com/t.atom";
- $res = cgi_run($path);
- like($res->{head}, qr/^Status: 200 /, "atom returned 200");
- like($res->{head}, qr!^Content-Type: application/atom\+xml!m,
- "search returned atom");
- my $t = XML::TreePP->new->parse($res->{body});
- is(scalar @{$t->{feed}->{entry}}, 3, "parsed three entries");
- like($t->{feed}->{-xmlns}, qr/\bAtom\b/,
- 'looks like an an Atom feed');
- } else {
- SKIP: { skip 'DBD::SQLite or XML::TreePP missing', 2 };
+ skip('DBD::SQLite not available', 7); # (4 - 1) above, 4 below
}
+ require_mods('XML::TreePP', 4);
+ $path = "/test/blahblah\@example.com/t.atom";
+ $res = cgi_run($path);
+ like($res->{head}, qr/^Status: 200 /, "atom returned 200");
+ like($res->{head}, qr!^Content-Type: application/atom\+xml!m,
+ "search returned atom");
+ my $t = XML::TreePP->new->parse($res->{body});
+ is(scalar @{$t->{feed}->{entry}}, 3, "parsed three entries");
+ like($t->{feed}->{-xmlns}, qr/\bAtom\b/,
+ 'looks like an an Atom feed');
}
done_testing();
sub cgi_run {
- my %env = (
+ my $env = {
PATH_INFO => $_[0],
QUERY_STRING => $_[1] || "",
SCRIPT_NAME => '',
@@ -154,11 +140,11 @@ sub cgi_run {
GATEWAY_INTERFACE => 'CGI/1.1',
HTTP_ACCEPT => '*/*',
HTTP_HOST => 'test.example.com',
- );
+ };
my ($in, $out, $err) = ("", "", "");
my $rdr = { 0 => \$in, 1 => \$out, 2 => \$err };
- run_script(['.cgi'], \%env, $rdr);
- die "unexpected error: \$?=$? ($err)" if $?;
+ run_script(['.cgi'], $env, $rdr);
+ fail "unexpected error: \$?=$? ($err)" if $?;
my ($head, $body) = split(/\r\n\r\n/, $out, 2);
{ head => $head, body => $body, err => $err }
}
next prev parent reply other threads:[~2021-02-09 8:09 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-09 8:09 [PATCH 00/11] Maildir code consolidation, test updates Eric Wong
2021-02-09 8:09 ` [PATCH 01/11] t/thread-index-gap.t: avoid unnecessary map Eric Wong
2021-02-09 8:09 ` [PATCH 02/11] test_common: disable fsync on the CLI where possible Eric Wong
2021-02-09 8:09 ` Eric Wong [this message]
2021-02-09 8:09 ` [PATCH 04/11] git: ->qx: respect caller's $/ in array context Eric Wong
2021-02-09 8:09 ` [PATCH 05/11] lei: split out MdirReader package, lazy-require earlier Eric Wong
2021-02-09 8:09 ` [PATCH 06/11] t/run.perl: fix for >128 tests Eric Wong
2021-02-09 8:09 ` [PATCH 07/11] use MdirReader in -watch and InboxWritable Eric Wong
2021-02-09 8:09 ` [PATCH 08/11] lei q: prefix --alert ops with ':' instead of '-' Eric Wong
2021-02-09 8:09 ` [PATCH 09/11] t/run.perl: drop Cwd dependency Eric Wong
2021-02-09 8:09 ` [PATCH 10/11] lei: replace "I:"-prefixed info messages with "#" Eric Wong
2021-02-09 8:09 ` [PATCH 11/11] tests|lei: fixes for TEST_RUN_MODE=0 and lei oneshot 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=20210209080937.4678-4-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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
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).