]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/solver_git.t
treewide: run update-copyrights from gnulib for 2019
[public-inbox.git] / t / solver_git.t
index 0c272d777c752ce9a10b3a003f009d1c0dbc5f4a..2dbb07b0cdef33cbe0c120e7c849dd2596f6cb61 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2019 all contributors <meta@public-inbox.org>
+# Copyright (C) 2019-2020 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict;
 use warnings;
@@ -6,8 +6,8 @@ use Test::More;
 use Cwd qw(abs_path);
 use PublicInbox::TestCommon;
 require_git(2.6);
-use PublicInbox::Spawn qw(spawn);
-require_mods(qw(DBD::SQLite Search::Xapian));
+use PublicInbox::Spawn qw(popen_rd);
+require_mods(qw(DBD::SQLite Search::Xapian Plack::Util));
 chomp(my $git_dir = `git rev-parse --git-dir 2>/dev/null`);
 plan skip_all => "$0 must be run from a git working tree" if $?;
 
@@ -38,17 +38,12 @@ $deliver_patch->('t/solve/0001-simple-mod.patch');
 my $v1_0_0_tag = 'cb7c42b1e15577ed2215356a2bf925aef59cdd8d';
 
 my $git = PublicInbox::Git->new($git_dir);
-is('public-inbox 1.0.0',
-       $git->commit_title($v1_0_0_tag),
-       'commit_title works on 1.0.0');
-
-is(undef, $git->commit_title('impossible'), 'undef on impossible object');
-
 $ibx->{-repo_objs} = [ $git ];
 my $res;
 my $solver = PublicInbox::SolverGit->new($ibx, sub { $res = $_[0] });
 open my $log, '+>>', "$inboxdir/solve.log" or die "open: $!";
-my $psgi_env = { 'psgi.errors' => *STDERR };
+my $psgi_env = { 'psgi.errors' => *STDERR, 'psgi.url_scheme' => 'http',
+               'HTTP_HOST' => 'example.com' };
 $solver->solve($psgi_env, $log, '69df7d5', {});
 ok($res, 'solved a blob!');
 my $wt_git = $res->[0];
@@ -125,14 +120,13 @@ SKIP: {
        my $cmd = [ qw(git hash-object -w --stdin) ];
        my $env = { GIT_DIR => $binfoo };
        while (my ($label, $size) = each %bin) {
-               pipe(my ($rout, $wout)) or die;
                pipe(my ($rin, $win)) or die;
-               my $rdr = { 0 => fileno($rin), 1 => fileno($wout) };
-               my $pid = spawn($cmd , $env, $rdr);
-               $wout = $rin = undef;
+               my $rout = popen_rd($cmd , $env, { 0 => $rin });
+               $rin = undef;
                print { $win } ("\0" x $size) or die;
                close $win or die;
                chomp($oid{$label} = <$rout>);
+               close $rout or die "$?";
        }
 
        # ensure the PSGI frontend (ViewVCS) works:
@@ -160,7 +154,16 @@ EOF
        my $non_existent = 'ee5e32211bf62ab6531bdf39b84b6920d0b6775a';
        my $client = sub {
                my ($cb) = @_;
-               my $res = $cb->(GET("/$name/3435775/s/"));
+               my $mid = '20190401081523.16213-1-BOFH@YHBT.net';
+               my @warn;
+               my $res = do {
+                       local $SIG{__WARN__} = sub { push @warn, @_ };
+                       $cb->(GET("/$name/$mid/"));
+               };
+               is_deeply(\@warn, [], 'no warnings from rendering diff');
+               like($res->content, qr!>&#937;</a>!, 'omega escaped');
+
+               $res = $cb->(GET("/$name/3435775/s/"));
                is($res->code, 200, 'success with existing blob');
 
                $res = $cb->(GET("/$name/".('0'x40).'/s/'));