my $lss = PublicInbox::LeiSavedSearch->up($lei, $out) or return;
my $f = $lss->{'-f'};
my $mset_opt = $lei->{mset_opt} = { relevance => -2 };
- my $q = $mset_opt->{q_raw} = $lss->{-cfg}->{'lei.q'} //
+ my $q = $lss->{-cfg}->get_all('lei.q') //
die("lei.q unset in $f (out=$out)\n");
my $lse = $lei->{lse} // die 'BUG: {lse} missing';
- if (ref($q)) {
- $mset_opt->{qstr} = $lse->query_argv_to_string($lse->git, $q);
+ if ($lss->{-cfg}->{'lei.internal.rawstr'}) {
+ scalar(@$q) > 1 and
+ die "$f: lei.q has multiple values (@$q) (out=$out)\n";
+ $lse->query_approxidate($lse->git, $mset_opt->{qstr} = $q->[0]);
} else {
- $lse->query_approxidate($lse->git, $mset_opt->{qstr} = $q);
+ $mset_opt->{qstr} = $lse->query_argv_to_string($lse->git, $q);
}
# n.b. only a few CLI args are accepted for "up", so //= usually sets
for my $k ($lss->ARRAY_FIELDS) {
lei_ok qw(forget-search --prune);
lei_ok qw(ls-search);
unlike($lei_out, qr!\Q$home/after\E!, "`after' pruned");
+
+ my $d = "$home/d";
+ lei_ok [qw(import -q -F eml)], undef,
+ {0 => \"Subject: do not call\n\n"};
+ lei_ok qw(q -o), $d, 's:do not call';
+
+ my @orig = glob("$d/*/*");
+ is(scalar(@orig), 1, 'got one message via argv');
+ lei_ok [qw(import -q -Feml)], undef,
+ {0 => \"Subject: do not ever call\n\n"};
+ lei_ok 'up', $d;
+ is_deeply([glob("$d/*/*")], \@orig, 'nothing written');
+ lei_ok [qw(import -q -Feml)], undef,
+ {0 => \"Subject: do not call, ever\n\n"};
+ lei_ok 'up', $d;
+ @after = glob("$d/*/*");
+ is(scalar(@after), 2, '2 total, messages, now');
+ is_deeply([glob("$d/cur/*")], \@orig, 'cur untouched');
+ my @new = glob("$d/new/*");
+ is(scalar(@new), 1, "new message written to `new'");
+ is(eml_load($new[0])->header('Subject'), 'do not call, ever',
+ 'up retrieved correct message');
+
+ $d = "$home/d-stdin";
+ lei_ok [ qw(q -q -o), $d ], undef, { 0 => \'s:"do not ever call"' };
+ @orig = glob("$d/*/*");
+ is(scalar(@orig), 1, 'got one message via stdin');
+
+ lei_ok [qw(import -q -Feml)], undef,
+ {0 => \"Subject: do not fall or ever call\n\n"};
+ lei_ok [qw(import -q -Feml)], undef,
+ {0 => \"Subject: do not ever call, again\n\n"};
+ lei_ok 'up', $d;
+ @new = glob("$d/new/*");
+ is(scalar(@new), 1, "new message written to `new'") or do {
+ for (@new) { diag "$_ ".eml_load($_)->header('Subject') }
+ };
+ is_deeply([glob("$d/cur/*")], \@orig, 'cur untouched');
+ is(eml_load($new[0])->header('Subject'), 'do not ever call, again',
+ 'up retrieved correct message');
+
});
done_testing;