diff --git a/src/testsuite/cmd-test-message.c b/src/testsuite/cmd-test-message.c index 4a4d804d4216ea62f2f3d2eb5be6df1c6be77468..735f6a6a3454724258a9c6af9b583aec84c2271a 100644 --- a/src/testsuite/cmd-test-message.c +++ b/src/testsuite/cmd-test-message.c @@ -390,7 +390,8 @@ static int cmd_test_message_mailbox_operation_execute } if ( !result ) - testsuite_test_failf("no outgoing SMTP message with index %d", msg_index); + testsuite_test_failf("no message in folder '%s' with index %d", + str_c(folder), msg_index); return SIEVE_EXEC_OK; } diff --git a/src/testsuite/testsuite-script.c b/src/testsuite/testsuite-script.c index f234d2f991588eb376eba3fa788bf96c2a1d780f..3a0ed6df5efa224158ad7072bbfcdf9cceccacb7 100644 --- a/src/testsuite/testsuite-script.c +++ b/src/testsuite/testsuite-script.c @@ -93,7 +93,6 @@ bool testsuite_script_run(const struct sieve_runtime_env *renv) /* Compose script execution environment */ memset(&scriptenv, 0, sizeof(scriptenv)); scriptenv.default_mailbox = "INBOX"; - scriptenv.namespaces = NULL; scriptenv.username = "user"; scriptenv.hostname = "host.example.com"; scriptenv.postmaster_address = "postmaster@example.com"; @@ -101,6 +100,8 @@ bool testsuite_script_run(const struct sieve_runtime_env *renv) scriptenv.smtp_close = NULL; scriptenv.duplicate_mark = NULL; scriptenv.duplicate_check = NULL; + scriptenv.namespaces = renv->scriptenv->namespaces; + scriptenv.trace_stream = renv->scriptenv->trace_stream; result = testsuite_result_get(); @@ -162,6 +163,8 @@ bool testsuite_script_multiscript scriptenv.smtp_close = NULL; scriptenv.duplicate_mark = NULL; scriptenv.duplicate_check = NULL; + scriptenv.namespaces = renv->scriptenv->namespaces; + scriptenv.trace_stream = renv->scriptenv->trace_stream; result = testsuite_result_get(); diff --git a/tests/extensions/imap4flags/multiscript.svtest b/tests/extensions/imap4flags/multiscript.svtest index 0a0418cb1dec445e901fb88e8850521a4cb46e54..98f5a2ac2223bde2fc8e0931156dafbf1ffcbfde 100644 --- a/tests/extensions/imap4flags/multiscript.svtest +++ b/tests/extensions/imap4flags/multiscript.svtest @@ -1,4 +1,9 @@ require "vnd.dovecot.testsuite"; +require "imap4flags"; +require "relational"; +require "comparator-i;ascii-numeric"; +require "mailbox"; +require "fileinto"; test "Segfault Trigger 1" { @@ -11,3 +16,44 @@ test "Segfault Trigger 1" { } } +test_set "message" text: +From: Henry von Flockenstoffen <henry@example.com> +To: Dieter von Ausburg <dieter@example.com> +Subject: Test message. + +Test message. +. +; + +test "Internal Flags" { + if hasflag :comparator "i;ascii-numeric" :count "ge" "1" { + test_fail "some flags or keywords are already set"; + } + + if not test_multiscript [ + "multiscript/setflag.sieve", + "multiscript/fileinto.sieve"] + { + test_fail "failed multiscript execution"; + } + + if not test_result_execute { + test_fail "failed to execute first result"; + } + + test_result_reset; + test_message :folder "folder" 0; + + if not hasflag "\\answered" { + test_fail "\\answered flag not stored for message"; + } + + if not hasflag "$label1" { + test_fail "$label1 keyword not stored for message"; + } + + if not hasflag :comparator "i;ascii-numeric" :count "eq" "2" { + test_fail "invalid number of flags set for message"; + } +} + diff --git a/tests/extensions/imap4flags/multiscript/fileinto.sieve b/tests/extensions/imap4flags/multiscript/fileinto.sieve new file mode 100644 index 0000000000000000000000000000000000000000..94892a5c838cd2b9d8ba1b71fd76ac3d4dc30fb4 --- /dev/null +++ b/tests/extensions/imap4flags/multiscript/fileinto.sieve @@ -0,0 +1,4 @@ +require "fileinto"; +require "mailbox"; + +fileinto :create "folder"; diff --git a/tests/extensions/imap4flags/multiscript/setflag.sieve b/tests/extensions/imap4flags/multiscript/setflag.sieve new file mode 100644 index 0000000000000000000000000000000000000000..c992d1989833ae5f5511f163e7733d617d26a684 --- /dev/null +++ b/tests/extensions/imap4flags/multiscript/setflag.sieve @@ -0,0 +1,3 @@ +require "imap4flags"; + +setflag "$label1 \\answered";