lib/PublicInbox/LeiSavedSearch.pm | 6 ++++-- t/lei-q-save.t | 4 ++++ diff --git a/lib/PublicInbox/LeiSavedSearch.pm b/lib/PublicInbox/LeiSavedSearch.pm index 0f632d9378aacfb2b8625b66185fce131d6d44d4..e44779eea1ae9aaf3f6379acdacd837a66719da6 100644 --- a/lib/PublicInbox/LeiSavedSearch.pm +++ b/lib/PublicInbox/LeiSavedSearch.pm @@ -24,9 +24,10 @@ my $uri = PublicInbox::URIimap->new($$dstref)->canonical; $$dstref = $$uri; @n = ($uri->mailbox); } else { # basename - @n = ($$dstref =~ m{([\w\-\.]+)/*\z}); $$dstref = $lei->rel2abs($$dstref); $$dstref .= '/' if -d $$dstref; + $$dstref =~ tr!/!/!s; + @n = ($$dstref =~ m{([^/]+)/*\z}); } push @n, sha256_hex($$dstref); $lei->share_path . '/saved-searches/' . join('-', @n); @@ -40,7 +41,8 @@ if (defined $dst) { # updating existing saved search via "lei up" my $f; $dir = $dst; output2lssdir($self, $lei, \$dir, \$f) or - return $lei->fail("--save was not used with $dst"); + return $lei->fail("--save was not used with $dst cwd=". + $lei->rel2abs('.')); $self->{-cfg} //= PublicInbox::Config::git_config_dump($f); $self->{'-f'} = $f; } else { # new saved search "lei q --save" diff --git a/t/lei-q-save.t b/t/lei-q-save.t index 6389825f46d260e353769d0c266739638bf6bb22..a8eda41ebc0479a525a0fc3db585c1f7b7c8bb1a 100644 --- a/t/lei-q-save.t +++ b/t/lei-q-save.t @@ -29,6 +29,8 @@ $in = $doc2->as_string; lei_ok [qw(import -q -F eml -)], undef, { 0 => \$in, %$lei_opt }; opendir my $dh, '.' or xbail "opendir .: $!"; lei_ok qw(up -q md -C), $home; + lei_ok qw(up -q . -C), "$home/md"; + lei_ok qw(up -q), "/$home/md"; chdir($dh) or xbail "fchdir . $!"; my %after = map { $_ => 1 } glob("$home/md/cur/*"); is(delete $after{(keys(%before))[0]}, 1, 'original message kept'); @@ -51,5 +53,7 @@ $in = $doc3->as_string; lei_ok [qw(import -q -F eml -)], undef, { 0 => \$in, %$lei_opt }; lei_ok([qw(up mbcl2)], undef, { -C => $home, %$lei_opt }); ok(-s "$home/mbcl2" > $size, 'size increased after up'); + + ok(!lei(qw(up -q), $home), 'up fails w/o --save'); }); done_testing;