diff options
author | Eric Wong <e@80x24.org> | 2023-11-28 17:36:58 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2023-11-29 02:13:29 +0000 |
commit | 4013b7577971a67f672c0925d84b01dd5ef5d7f5 (patch) | |
tree | ac314cc4686384493f3437e2bd6eeed72c7ba50a /t | |
parent | d440959d8df609f3f2422d89381978116db4ad04 (diff) | |
download | public-inbox-4013b7577971a67f672c0925d84b01dd5ef5d7f5.tar.gz |
--no-import-before skips importing entire messages, not just keywords, so it can cause permanent data loss if -o is pointed to precious data.
Diffstat (limited to 't')
-rw-r--r-- | t/lei-q-kw.t | 19 |
1 files changed, 16 insertions, 3 deletions
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 = { '<qp@example.com>' => eml_load('t/plack-qp.eml'), '<testmessage@example.com>' => 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'), '<qp@example.com>'; + 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]; } }; |