X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fconvert-compact.t;h=1671caad0bb0b55fe93a779e927c8dffce08673c;hb=9253dc860de52360d3bc60710422783457143e3d;hp=dbccfbadf59b45bca05d82c7b9b848c2a802bc9f;hpb=3c39f9c942a6975245fda878e9b957d8d3367662;p=public-inbox.git diff --git a/t/convert-compact.t b/t/convert-compact.t index dbccfbad..1671caad 100644 --- a/t/convert-compact.t +++ b/t/convert-compact.t @@ -1,24 +1,19 @@ -# Copyright (C) 2018-2019 all contributors +# Copyright (C) 2018-2020 all contributors # License: AGPL-3.0+ use strict; use warnings; use Test::More; -use File::Temp qw/tempdir/; use PublicInbox::MIME; use PublicInbox::Spawn qw(which); -require './t/common.perl'; +use PublicInbox::TestCommon; require_git(2.6); -my @mods = qw(DBD::SQLite Search::Xapian); -foreach my $mod (@mods) { - eval "require $mod"; - plan skip_all => "$mod missing for convert-compact.t" if $@; -} +require_mods(qw(DBD::SQLite Search::Xapian)); which('xapian-compact') or plan skip_all => 'xapian-compact missing for '.__FILE__; use_ok 'PublicInbox::V2Writable'; use PublicInbox::Import; -my $tmpdir = tempdir('convert-compact-XXXXXX', TMPDIR => 1, CLEANUP => 1); +my ($tmpdir, $for_destroy) = tmpdir(); my $ibx = { inboxdir => "$tmpdir/v1", name => 'test-v1', @@ -62,22 +57,30 @@ foreach (@xdir) { 'sharedRepository respected on file after convert'); } -local $ENV{PATH} = "blib/script:$ENV{PATH}"; local $ENV{PI_CONFIG} = '/dev/null'; -open my $err, '>>', "$tmpdir/err.log" or die "open: err.log $!\n"; -open my $out, '>>', "$tmpdir/out.log" or die "open: out.log $!\n"; -my $rdr = { 1 => fileno($out), 2 => fileno($err) }; +my ($out, $err) = ('', ''); +my $rdr = { 1 => \$out, 2 => \$err }; -my $cmd = [ 'public-inbox-compact', $ibx->{inboxdir} ]; -ok(PublicInbox::Import::run_die($cmd, undef, $rdr), 'v1 compact works'); +my $cmd = [ '-compact', $ibx->{inboxdir} ]; +ok(run_script($cmd, undef, $rdr), 'v1 compact works'); @xdir = glob("$ibx->{inboxdir}/public-inbox/xap*"); is(scalar(@xdir), 1, 'got one xapian directory after compact'); is(((stat($xdir[0]))[2]) & 07777, 0755, 'sharedRepository respected on v1 compact'); -$cmd = [ 'public-inbox-convert', $ibx->{inboxdir}, "$tmpdir/v2" ]; -ok(PublicInbox::Import::run_die($cmd, undef, $rdr), 'convert works'); +my $hwm = do { + my $mm = $ibx->mm; + $ibx->cleanup; + $mm->num_highwater; +}; +ok(defined($hwm) && $hwm > 0, "highwater mark set #$hwm"); + +$cmd = [ '-convert', '--no-index', $ibx->{inboxdir}, "$tmpdir/no-index" ]; +ok(run_script($cmd, undef, $rdr), 'convert --no-index works'); + +$cmd = [ '-convert', $ibx->{inboxdir}, "$tmpdir/v2" ]; +ok(run_script($cmd, undef, $rdr), 'convert works'); @xdir = glob("$tmpdir/v2/xap*/*"); foreach (@xdir) { my @st = stat($_); @@ -85,11 +88,12 @@ foreach (@xdir) { 'sharedRepository respected after convert'); } -$cmd = [ 'public-inbox-compact', "$tmpdir/v2" ]; +$cmd = [ '-compact', "$tmpdir/v2" ]; my $env = { NPROC => 2 }; -ok(PublicInbox::Import::run_die($cmd, $env, $rdr), 'v2 compact works'); +ok(run_script($cmd, $env, $rdr), 'v2 compact works'); $ibx->{inboxdir} = "$tmpdir/v2"; $ibx->{version} = 2; +is($ibx->mm->num_highwater, $hwm, 'highwater mark unchanged in v2 inbox'); @xdir = glob("$tmpdir/v2/xap*/*"); foreach (@xdir) {