From 8ff3a4e3a217bcc5a6064206d9a46ed81cd67205 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan@rename-it.nl> Date: Mon, 28 Nov 2011 08:53:43 +0100 Subject: [PATCH] lib-sieve: editheader: fixed normal implicit keep. This was broken by previous change. It now properly uses the final version of the message instead of the original. --- src/lib-sieve/sieve-result.c | 7 ++- tests/extensions/editheader/addheader.svtest | 46 +++++++++++++++++++ .../extensions/editheader/deleteheader.svtest | 40 +++++++++++++++- 3 files changed, 90 insertions(+), 3 deletions(-) diff --git a/src/lib-sieve/sieve-result.c b/src/lib-sieve/sieve-result.c index a6d5e1a5a..eb720e320 100644 --- a/src/lib-sieve/sieve-result.c +++ b/src/lib-sieve/sieve-result.c @@ -912,10 +912,13 @@ static bool _sieve_result_implicit_keep void *tr_context = NULL; struct sieve_action act_keep; - if ( rollback ) + if ( rollback ) { act_keep = result->failure_action; - else + act_keep.mail = NULL; + } else { act_keep = result->keep_action; + act_keep.mail = sieve_message_get_mail(result->action_env.msgctx); + } /* If keep is a non-action, return right away */ if ( act_keep.def == NULL ) return TRUE; diff --git a/tests/extensions/editheader/addheader.svtest b/tests/extensions/editheader/addheader.svtest index 27fe56863..c0da0ff55 100644 --- a/tests/extensions/editheader/addheader.svtest +++ b/tests/extensions/editheader/addheader.svtest @@ -477,5 +477,51 @@ This is somewhat longer header content } } +test_result_reset; + +test_set "message" "${message}"; +test "Addheader - implicit keep" { + if size :over 76 { + test_fail "original message is longer than 76 bytes?!"; + } + + addheader "X-Some-Header" "Header content"; + + if not test_result_execute { + test_fail "failed to execute result"; + } + + if not test_message :folder "INBOX" 0 { + test_fail "message not stored"; + } + + if not size :over 76 { + test_fail "stored mail is not larger"; + } + + if size :over 107 { + test_fail "stored mail is too large"; + } + + if size :under 100 { + test_fail "stored mail is too small"; + } + + if not header :is "subject" "Frop!" { + test_fail "original subject header not retained in stored message"; + } + + if not exists "x-some-header" { + test_fail "header not added to stored message"; + } + + if not header :is "x-some-header" "Header content" { + test_fail "wrong content added to stored message"; + } + + if not body :matches "Frop!*" { + test_fail "body not retained in stored mail"; + } +} diff --git a/tests/extensions/editheader/deleteheader.svtest b/tests/extensions/editheader/deleteheader.svtest index 85254a5e7..0d476b3bb 100644 --- a/tests/extensions/editheader/deleteheader.svtest +++ b/tests/extensions/editheader/deleteheader.svtest @@ -610,6 +610,44 @@ test "Deleteheader - :index :last" { } } +test_result_reset; +test_set "message" "${message}"; +test "Deleteheader - implicit keep" { + deleteheader "X-D"; + + if not test_result_execute { + test_fail "failed to execute result"; + } + + if not test_message :folder "INBOX" 0 { + test_fail "message not stored"; + } + + if not header :is "subject" "Frop!" { + test_fail "original subject header not retained in stored mail"; + } + + if not header :is "X-B" "omdat dit anders" { + test_fail "original X-B header not retained in stored mail"; + } + + if not header :is "X-C" "niet via e-mail versturen" { + test_fail "original X-C header not retained in stored mail"; + } + + if exists "X-D" { + test_fail "X-D header not deleted in stored mail"; + } + + if not body :matches "Frop!*" { + test_fail "body not retained in stored mail"; + } +} + +/* + * + */ + test_result_reset; test_set "message" text: @@ -846,7 +884,7 @@ Frop! . ; -test "Deleteheader - :matches" { +test "Deleteheader - folded" { deleteheader "X-A"; if exists "X-A" { -- GitLab