X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=xt%2Fsolver.t;h=880458fb96689aad3a5263a7d030102c0a821af4;hb=refs%2Fheads%2Fmaster;hp=99fca0d3012c5c3cae15e9c86974b0dd51f667f6;hpb=6b13c85d2b1b94973c374fa3444148b49d1d8a19;p=public-inbox.git diff --git a/xt/solver.t b/xt/solver.t index 99fca0d3..1b0af3d8 100644 --- a/xt/solver.t +++ b/xt/solver.t @@ -1,8 +1,7 @@ #!perl -w -# Copyright (C) 2020 all contributors +# Copyright (C) all contributors # License: AGPL-3.0+ -use strict; -use Test::More; +use v5.12; use PublicInbox::TestCommon; use PublicInbox::Config; # this relies on PI_CONFIG // ~/.public-inbox/config my @psgi = qw(HTTP::Request::Common Plack::Test URI::Escape Plack::Builder); @@ -30,49 +29,46 @@ my $todo = { '6aa8857a11/s/?b=protocol.c', '96f1c7f/s/', # TODO: b=contrib/completion/git-completion.bash 'b76f2c0/s/?b=po/zh_CN.po', + 'c2f3bf071ee90b01f2d629921bb04c4f798f02fa/s/', # tag ], }; my ($ibx_name, $urls, @gone); my $client = sub { my ($cb) = @_; - for (@$urls) { - my $url = "/$ibx_name/$_"; + for my $u (@$urls) { + my $url = "/$ibx_name/$u"; my $res = $cb->(GET($url)); is($res->code, 200, $url); next if $res->code == 200; - # diag $res->content; diag "$url failed"; + diag $res->content; } }; my $nr = 0; while (($ibx_name, $urls) = each %$todo) { SKIP: { - if (!$cfg->lookup_name($ibx_name)) { + my $ibx = $cfg->lookup_name($ibx_name); + if (!$ibx) { push @gone, $ibx_name; - skip("$ibx_name not configured", scalar(@$urls)); + skip(qq{[publicinbox "$ibx_name"] not configured}, + scalar(@$urls)); + } + if (!defined($ibx->{coderepo})) { + push @gone, $ibx_name; + skip(qq{publicinbox.$ibx_name.coderepo not configured}, + scalar(@$urls)); } test_psgi($app, $client); $nr++; } } -SKIP: { - require_mods(qw(Plack::Test::ExternalServer), $nr); - delete @$todo{@gone}; - - my $sock = tcp_server() or BAIL_OUT $!; - my ($tmpdir, $for_destroy) = tmpdir(); - my ($out, $err) = map { "$tmpdir/std$_.log" } qw(out err); - my $cmd = [ qw(-httpd -W0), "--stdout=$out", "--stderr=$err" ]; - my $td = start_script($cmd, undef, { 3 => $sock }); - my ($h, $p) = ($sock->sockhost, $sock->sockport); - - local $ENV{PLACK_TEST_EXTERNALSERVER_URI} = "http://$h:$p"; - while (($ibx_name, $urls) = each %$todo) { - Plack::Test::ExternalServer::test_psgi(client => $client); - } +delete @$todo{@gone}; +my $env = { PI_CONFIG => PublicInbox::Config->default_file }; +while (($ibx_name, $urls) = each %$todo) { + test_httpd($env, $client, $nr); } done_testing();