]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/www_altid.t
No ext_urls
[public-inbox.git] / t / www_altid.t
index a885c3897c6bbbd7735acc1e9206777d8dba6aea..de1e6ed66fa0d677ce1fb640c554f014f7cce1ac 100644 (file)
@@ -1,56 +1,45 @@
-# Copyright (C) 2020 all contributors <meta@public-inbox.org>
+#!perl -w
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
-use strict;
-use Test::More;
-use PublicInbox::TestCommon;
-use PublicInbox::Inbox;
-use PublicInbox::InboxWritable;
+use strict; use v5.10.1; use PublicInbox::TestCommon;
 use PublicInbox::Config;
-use PublicInbox::Spawn qw(which spawn);
-which('sqlite3') or plan skip_all => 'sqlite3 binary missing';
+use PublicInbox::Spawn qw(spawn);
+require_cmd('sqlite3');
 require_mods(qw(DBD::SQLite HTTP::Request::Common Plack::Test URI::Escape
        Plack::Builder IO::Uncompress::Gunzip));
 use_ok($_) for qw(Plack::Test HTTP::Request::Common);
 require_ok 'PublicInbox::Msgmap';
 require_ok 'PublicInbox::AltId';
 require_ok 'PublicInbox::WWW';
-my ($inboxdir, $for_destroy) = tmpdir();
+my ($tmpdir, $for_destroy) = tmpdir();
 my $aid = 'xyz';
-my $spec = "serial:$aid:file=blah.sqlite3";
-if ('setup') {
-       my $opts = {
-               inboxdir => $inboxdir,
-               name => 'test',
-               -primary_address => 'test@example.com',
-       };
-       my $ibx = PublicInbox::Inbox->new($opts);
-       $ibx = PublicInbox::InboxWritable->new($ibx, 1);
-       my $im = $ibx->importer(0);
-       my $mime = PublicInbox::MIME->new(<<'EOF');
+my $cfgpath;
+my $ibx = create_inbox 'test', indexlevel => 'basic', sub {
+       my ($im, $ibx) = @_;
+       $im->add(PublicInbox::Eml->new(<<'EOF')) or BAIL_OUT;
 From: a@example.com
 Message-Id: <a@example.com>
 
 EOF
-       $im->add($mime);
-       $im->done;
-       mkdir "$inboxdir/public-inbox" or die;
+       # $im->done;
+       my $spec = "serial:$aid:file=blah.sqlite3";
        my $altid = PublicInbox::AltId->new($ibx, $spec, 1);
        $altid->mm_alt->mid_set(1, 'a@example.com');
-}
-
-my $cfgpath = "$inboxdir/cfg";
-open my $fh, '>', $cfgpath or die;
-print $fh <<EOF or die;
+       $cfgpath = "$ibx->{inboxdir}/cfg";
+       open my $fh, '>', $cfgpath or BAIL_OUT "open $cfgpath: $!";
+       print $fh <<EOF or BAIL_OUT $!;
 [publicinbox "test"]
-       inboxdir = $inboxdir
-       address = test\@example.com
+       inboxdir = $ibx->{inboxdir}
+       address = $ibx->{-primary_address}
        altid = $spec
        url = http://example.com/test
 EOF
-close $fh or die;
+       close $fh or BAIL_OUT $!;
+};
+$cfgpath //= "$ibx->{inboxdir}/cfg";
 my $cfg = PublicInbox::Config->new($cfgpath);
 my $www = PublicInbox::WWW->new($cfg);
-my $cmpfile = "$inboxdir/cmp.sqlite3";
+my $cmpfile = "$tmpdir/cmp.sqlite3";
 my $client = sub {
        my ($cb) = @_;
        my $res = $cb->(POST("/test/$aid.sql.gz"));
@@ -70,14 +59,7 @@ my $client = sub {
 };
 test_psgi(sub { $www->call(@_) }, $client);
 SKIP: {
-       require_mods(qw(Plack::Test::ExternalServer), 4);
-       my $env = { PI_CONFIG => $cfgpath };
-       my $sock = tcp_server() or die;
-       my ($out, $err) = map { "$inboxdir/std$_.log" } qw(out err);
-       my $cmd = [ qw(-httpd -W0), "--stdout=$out", "--stderr=$err" ];
-       my $td = start_script($cmd, $env, { 3 => $sock });
-       my ($h, $p) = ($sock->sockhost, $sock->sockport);
-       local $ENV{PLACK_TEST_EXTERNALSERVER_URI} = "http://$h:$p";
-       Plack::Test::ExternalServer::test_psgi(client => $client);
+       my $env = { PI_CONFIG => $cfgpath, TMPDIR => $tmpdir };
+       test_httpd($env, $client);
 }
 done_testing;