-# Copyright (C) 2019-2020 all contributors <meta@public-inbox.org>
+# Copyright (C) 2019-2021 all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
# manifest.js.gz generation and grok-pull integration test
use strict;
my $cfgfile = "$tmpdir/config";
my $v2 = "$tmpdir/v2";
my $sock = tcp_server();
- ok($sock, 'sock created');
- my ($host, $port) = ($sock->sockhost, $sock->sockport);
+ my ($host, $port) = tcp_host_port($sock);
my @clone = qw(git clone -q -s --bare);
is(xsys(@clone, $bare->{git_dir}, $alt), 0, 'clone shared repo');
tiny_test($json, $host, $port);
my $grok_pull = which('grok-pull') or
- skip('skipping grok-pull integration test', 2);
+ skip('grok-pull not available', 12);
+ my ($grok_version) = (xqx([$grok_pull, "--version"])
+ =~ /(\d+)\.(?:\d+)(?:\.(\d+))?/);
+ $grok_version >= 2 or
+ skip('grok-pull v2 or later not available', 12);
ok(mkdir("$tmpdir/mirror"), 'prepare grok mirror dest');
open $fh, '>', "$tmpdir/repos.conf" or die;
print $fh <<"" or die;
-# You can pull from multiple grok mirrors, just create
-# a separate section for each mirror. The name can be anything.
-[test]
-site = http://$host:$port
-manifest = http://$host:$port/manifest.js.gz
+[core]
toplevel = $tmpdir/mirror
-mymanifest = $tmpdir/local-manifest.js.gz
+manifest = $tmpdir/local-manifest.js.gz
+[remote]
+site = http://$host:$port
+manifest = \${site}/manifest.js.gz
+[pull]
+[fsck]
close $fh or die;
xsys($grok_pull, '-c', "$tmpdir/repos.conf");
- is($? >> 8, 127, 'grok-pull exit code as expected');
+ is($? >> 8, 0, 'grok-pull exit code as expected');
for (qw(alt bare v2/git/0.git v2/git/1.git v2/git/2.git)) {
ok(-d "$tmpdir/mirror/$_", "grok-pull created $_");
}
# /$INBOX/v2/manifest.js.gz
open $fh, '>', "$tmpdir/per-inbox.conf" or die;
print $fh <<"" or die;
-# You can pull from multiple grok mirrors, just create
-# a separate section for each mirror. The name can be anything.
-[v2]
-site = http://$host:$port
-manifest = http://$host:$port/v2/manifest.js.gz
+[core]
toplevel = $tmpdir/per-inbox
-mymanifest = $tmpdir/per-inbox-manifest.js.gz
+manifest = $tmpdir/per-inbox-manifest.js.gz
+[remote]
+site = http://$host:$port
+manifest = \${site}/v2/manifest.js.gz
+[pull]
+[fsck]
close $fh or die;
ok(mkdir("$tmpdir/per-inbox"), 'prepare single-v2-inbox mirror');
xsys($grok_pull, '-c', "$tmpdir/per-inbox.conf");
- is($? >> 8, 127, 'grok-pull exit code as expected');
+ is($? >> 8, 0, 'grok-pull exit code as expected');
for (qw(v2/git/0.git v2/git/1.git v2/git/2.git)) {
ok(-d "$tmpdir/per-inbox/$_", "grok-pull created $_");
}