From 4013b7577971a67f672c0925d84b01dd5ef5d7f5 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 28 Nov 2023 17:36:58 +0000 Subject: lei q: fix --no-import-before completion + docs --no-import-before skips importing entire messages, not just keywords, so it can cause permanent data loss if -o is pointed to precious data. --- t/lei-q-kw.t | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 't') diff --git a/t/lei-q-kw.t b/t/lei-q-kw.t index 06e1df6c..63e46037 100644 --- a/t/lei-q-kw.t +++ b/t/lei-q-kw.t @@ -9,6 +9,8 @@ use IO::Compress::Gzip qw(gzip); use PublicInbox::MboxReader; use PublicInbox::LeiToMail; use PublicInbox::Spawn qw(popen_rd); +use File::Path qw(make_path); +use PublicInbox::IO qw(write_file); my $exp = { '' => eml_load('t/plack-qp.eml'), '' => eml_load('t/utf8.eml'), @@ -42,6 +44,19 @@ lei_ok(qw(q -o), "maildir:$o", qw(m:qp@example.com)); @fn = glob("$o/cur/*:2,S"); is(scalar(@fn), 1, "`seen' flag (but not `replied') set on Maildir file"); +{ + $o = "$ENV{HOME}/dst-existing"; + make_path(map { "$o/$_" } qw(new cur tmp)); + my $bp = eml_load('t/data/binary.patch'); + write_file '>', "$o/cur/binary-patch:2,S", $bp->as_string; + lei_ok qw(q --no-import-before m:qp@example.com -o), $o; + my @g = glob("$o/*/*"); + is scalar(@g), 1, 'only newly imported message left'; + is eml_load($g[0])->header_raw('Message-ID'), ''; + lei qw(q m:binary-patch-test@example); + is $lei_out, "[null]\n", 'old message not imported'; +} + SKIP: { $o = "$ENV{HOME}/fifo"; mkfifo($o, 0600) or skip("mkfifo not supported: $!", 1); @@ -80,9 +95,7 @@ my $write_file = sub { if ($_[0] =~ /\.gz\z/) { gzip(\($_[1]), $_[0]) or BAIL_OUT 'gzip'; } else { - open my $fh, '>', $_[0] or BAIL_OUT $!; - print $fh $_[1] or BAIL_OUT $!; - close $fh or BAIL_OUT; + write_file '>', $_[0], $_[1]; } }; -- cgit v1.2.3-24-ge0c7