X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fv2mirror.t;h=c1c66d45a41d4c4c8f2e2ca1cf048ad5b372ddc3;hb=HEAD;hp=63d17ebfebba9e09c6af0207802d0fdf354bc803;hpb=9cfb026469d5d94a0bbcbd11f6e0466db2aebfe1;p=public-inbox.git
diff --git a/t/v2mirror.t b/t/v2mirror.t
index 63d17ebf..c1c66d45 100644
--- a/t/v2mirror.t
+++ b/t/v2mirror.t
@@ -1,10 +1,11 @@
-# Copyright (C) 2018-2021 all contributors
+# Copyright (C) all contributors
# License: AGPL-3.0+
use strict;
use v5.10.1;
use PublicInbox::TestCommon;
use File::Path qw(remove_tree make_path);
use Cwd qw(abs_path);
+use Carp ();
use PublicInbox::Spawn qw(which);
require_git(2.6);
require_cmd('curl');
@@ -102,7 +103,9 @@ my @new_epochs;
my $fetch_each_epoch = sub {
my %before = map { $_ => 1 } glob("$tmpdir/m/git/*");
run_script([qw(-fetch --exit-code -q)], undef, {-C => "$tmpdir/m"}) or
- xbail '-fetch fail';
+ xbail('-fetch fail ',
+ [ xqx([which('find'), "$tmpdir/m", qw(-type f -ls) ]) ],
+ Carp::longmess());
is($?, 0, '--exit-code 0 after fetch updated');
my @after = grep { !$before{$_} } glob("$tmpdir/m/git/*");
push @new_epochs, @after;
@@ -273,6 +276,10 @@ if ('test read-only epoch dirs') {
my @g = glob("$dst/git/*.git");
my @w = grep { -w $_ } @g;
my @r = grep { ! -w $_ } @g;
+ if ($> == 0) {
+ @w = grep { (stat($_))[2] & 0200 } @g;
+ @r = grep { !((stat($_))[2] & 0200) } @g;
+ }
is(scalar(@w), 1, 'one writable directory');
my ($w) = ($w[0] =~ m!/([0-9]+)\.git\z!);
is((grep {
@@ -287,7 +294,7 @@ if ('test read-only epoch dirs') {
"http://$host:$port/v2/", $dst]);
my @g2 = glob("$dst/git/*.git") ;
is_deeply(\@g2, \@g, 'cloned again');
- is(scalar(grep { -w $_ } @g2), scalar(@w) + 1,
+ is(scalar(grep { (stat($_))[2] & 0200 } @g2), scalar(@w) + 1,
'got one more cloned epoch');
# make 0.git writable and fetch into it, relies on culled manifest
@@ -323,7 +330,7 @@ SKIP: {
require_mods('Email::MIME', 1); # for legacy revision
# using plackup to test old PublicInbox::WWW since -httpd from
# back then relied on some packages we no longer depend on
- my $plackup = which('plackup') or skip('no plackup in path', 1);
+ my $plackup = require_cmd('plackup', 1) or skip('no plackup in path', 1);
require PublicInbox::Lock;
chomp $oldrev;
my ($base) = ($0 =~ m!\b([^/]+)\.[^\.]+\z!);
@@ -361,10 +368,11 @@ EOM
# wait for plackup socket()+bind()+listen()
my %opt = ( Proto => 'tcp', Type => Socket::SOCK_STREAM(),
PeerAddr => "$host:$port" );
- for (0..50) {
+ for (0..100) {
tick();
last if IO::Socket::INET->new(%opt);
}
+ IO::Socket::INET->new(%opt) or xbail "connect $host:$port: $!";
my $dst = "$tmpdir/scrape";
@cmd = (qw(-clone -q), "http://$host:$port/v2", $dst);
run_script(\@cmd, undef, { 2 => \($err = '') });
@@ -377,7 +385,7 @@ EOM
@cmd = (qw(-clone -q --epoch=~0), "http://$host:$port/v2", $dst);
run_script(\@cmd, undef, { 2 => \($err = '') });
is($?, 0, 'partial scraping clone on old PublicInbox::WWW');
- my @g_last = grep { -w $_ } glob("$dst/git/*.git");
+ my @g_last = grep { (stat($_))[2] & 0200 } glob("$dst/git/*.git");
is_deeply(\@g_last, [ $g_all[-1] ], 'partial clone of ~0 worked');
chmod(0755, $g_all[0]) or xbail "chmod $!";