]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/solver_git.t
testcommon: spawn-aware system() and qx[] workalikes
[public-inbox.git] / t / solver_git.t
index 92402c3a16768b88aea7347254cfcb9f2a78952f..7f79ff4cc8790d65bb9052fe8880a2f44504a215 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;
@@ -8,8 +8,9 @@ use PublicInbox::TestCommon;
 require_git(2.6);
 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 $?;
+my $git_dir = xqx([qw(git rev-parse --git-dir)], undef, {2 => \(my $null)});
+$? == 0 or plan skip_all => "$0 must be run from a git working tree";
+chomp $git_dir;
 
 # needed for alternates, and --absolute-git-dir is only in git 2.13+
 $git_dir = abs_path($git_dir);
@@ -28,8 +29,8 @@ my $im = PublicInbox::V2Writable->new($ibx, 1);
 $im->{parallel} = 0;
 
 my $deliver_patch = sub ($) {
-       open my $fh, '<', $_[0] or die "open: $!";
-       my $mime = PublicInbox::MIME->new(do { local $/; <$fh> });
+       my $mime = PublicInbox::InboxWritable::mime_from_path($_[0]) or
+               die "open $_[0]: $!";
        $im->add($mime);
        $im->done;
 };
@@ -109,7 +110,8 @@ SKIP: {
        require_mods(@psgi, 7 + scalar(@psgi));
        use_ok($_) for @psgi;
        my $binfoo = "$inboxdir/binfoo.git";
-       system(qw(git init --bare -q), $binfoo) == 0 or die "git init: $?";
+       require PublicInbox::Import;
+       PublicInbox::Import::init_bare($binfoo);
        require_ok 'PublicInbox::ViewVCS';
        my $big_size = do {
                no warnings 'once';
@@ -154,7 +156,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/'));