diff options
-rw-r--r-- | lib/PublicInbox/LeiInput.pm | 2 | ||||
-rw-r--r-- | lib/PublicInbox/MHreader.pm | 3 | ||||
-rw-r--r-- | t/mh_reader.t | 14 |
3 files changed, 13 insertions, 6 deletions
diff --git a/lib/PublicInbox/LeiInput.pm b/lib/PublicInbox/LeiInput.pm index 947a7a79..d003d983 100644 --- a/lib/PublicInbox/LeiInput.pm +++ b/lib/PublicInbox/LeiInput.pm @@ -242,7 +242,7 @@ sub input_path_url { } } elsif (-d _ && $ifmt eq 'mh') { my $mhr = PublicInbox::MHreader->new($input.'/', $lei->{3}); - $mhr->{sort} = $lei->{opt}->{sort}; + $mhr->{sort} = $lei->{opt}->{sort} // [ 'sequence']; $mhr->mh_each_eml($self->can('input_mh_cb'), $self, @args); } elsif (-d _ && $ifmt =~ /\A(?:v1|v2)\z/) { my $ibx = PublicInbox::Inbox->new({inboxdir => $input}); diff --git a/lib/PublicInbox/MHreader.pm b/lib/PublicInbox/MHreader.pm index 033aa740..3e7bbd5c 100644 --- a/lib/PublicInbox/MHreader.pm +++ b/lib/PublicInbox/MHreader.pm @@ -54,7 +54,8 @@ sub mh_each_file { opendir(my $dh, my $dir = $self->{dir}); my $restore = PublicInbox::OnDestroy->new($$, \&chdir, $self->{cwdfh}); chdir($dh); - if (defined(my $sort = $self->{sort})) { + my $sort = $self->{sort}; + if (defined $sort && "@$sort" ne 'none') { my @sort = map { my @tmp = $_ eq '' ? ('sequence') : split(/[, ]/); # sorting by name alphabetically makes no sense for MH: diff --git a/t/mh_reader.t b/t/mh_reader.t index 711fc8aa..c81df32e 100644 --- a/t/mh_reader.t +++ b/t/mh_reader.t @@ -7,6 +7,7 @@ use PublicInbox::IO qw(write_file); use PublicInbox::Lock; use PublicInbox::OnDestroy; use PublicInbox::Eml; +use File::Path qw(remove_tree); use autodie; opendir my $cwdfh, '.'; @@ -103,12 +104,17 @@ test_lei(sub { like $lei_out, qr/^Subject: msg 4\nStatus: RO\n\n\n/ms, "message retrieved after `lei index'"; + lei_ok qw(convert -s none -f text), "mh:$for_sort", \'--sort=none'; + # ensure sort works for _input_ when output disallows sort my $v2out = "$ENV{HOME}/v2-out"; - lei_ok qw(convert -s sequence), "mh:$for_sort", '-o', "v2:$v2out"; - my $git = PublicInbox::Git->new("$v2out/git/0.git"); - chomp(my @l = $git->qx(qw(log --pretty=oneline --format=%s))); - is_xdeeply \@l, [1, 22, 333], 'sequence order preserved for v2'; + for my $sort (['--sort=sequence'], []) { # sequence is the default + lei_ok qw(convert), @$sort, "mh:$for_sort", '-o', "v2:$v2out"; + my $g = PublicInbox::Git->new("$v2out/git/0.git"); + chomp(my @l = $g->qx(qw(log --pretty=oneline --format=%s))); + is_xdeeply \@l, [1, 22, 333], 'sequence order preserved for v2'; + File::Path::remove_tree $v2out; + } }); done_testing; |