]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/solver_git.t
ds: remove Timer->cancel and Timer class+bless
[public-inbox.git] / t / solver_git.t
index af5bf7bc33f86b296066e0df8a9d55c2a4dc91d4..92402c3a16768b88aea7347254cfcb9f2a78952f 100644 (file)
@@ -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:
@@ -157,6 +151,7 @@ EOF
        close $cfgfh or die;
        my $cfg = PublicInbox::Config->new($cfgpath);
        my $www = PublicInbox::WWW->new($cfg);
+       my $non_existent = 'ee5e32211bf62ab6531bdf39b84b6920d0b6775a';
        my $client = sub {
                my ($cb) = @_;
                my $res = $cb->(GET("/$name/3435775/s/"));
@@ -165,6 +160,9 @@ EOF
                $res = $cb->(GET("/$name/".('0'x40).'/s/'));
                is($res->code, 404, 'failure with null OID');
 
+               $res = $cb->(GET("/$name/$non_existent/s/"));
+               is($res->code, 404, 'failure with null OID');
+
                $res = $cb->(GET("/$name/$v1_0_0_tag/s/"));
                is($res->code, 200, 'shows commit');
                while (my ($label, $size) = each %bin) {