diff --git a/Makefile.am b/Makefile.am index 20d85a6df6e72ede71fec39cb3a78b9a4a0cc174..b20be0ecfd967d0bacc7923b4bbee6c76f3b7691 100644 --- a/Makefile.am +++ b/Makefile.am @@ -70,6 +70,7 @@ test_cases = \ tests/extensions/include/once.svtest \ tests/extensions/include/twice.svtest \ tests/extensions/include/rfc.svtest \ + tests/extensions/include/execute.svtest \ tests/extensions/imap4flags/basic.svtest \ tests/extensions/imap4flags/hasflag.svtest \ tests/extensions/imap4flags/errors.svtest \ diff --git a/src/testsuite/testsuite-script.c b/src/testsuite/testsuite-script.c index 49456a5030d64f8dd89146d689e87d3bf4d81b94..955bf19bfe7c0ed3f0c340461be2f19d021e1369 100644 --- a/src/testsuite/testsuite-script.c +++ b/src/testsuite/testsuite-script.c @@ -51,6 +51,7 @@ bool testsuite_script_compile(const char *script_path) /* Currently needed for include (FIXME) */ env_put(t_strconcat("SIEVE_DIR=", sieve_dir, "included", NULL)); env_put(t_strconcat("SIEVE_GLOBAL_DIR=", sieve_dir, "included-global", NULL)); + if ( (sbin = sieve_compile(script_path, NULL, testsuite_log_ehandler)) == NULL ) return FALSE; diff --git a/src/testsuite/testsuite.c b/src/testsuite/testsuite.c index 869dfff0c35a10b4bcac02d92166a064868234ee..75fcf858dfc9b5be754a1351162d2c0a6f8352b3 100644 --- a/src/testsuite/testsuite.c +++ b/src/testsuite/testsuite.c @@ -189,7 +189,7 @@ int main(int argc, char **argv) /* Currently needed for include (FIXME) */ env_put(t_strconcat("SIEVE_DIR=", sieve_dir, "included", NULL)); env_put(t_strconcat("SIEVE_GLOBAL_DIR=", sieve_dir, "included-global", NULL)); - + /* Compile sieve script */ if ( (sbin = sieve_tool_script_compile(scriptfile, NULL)) != NULL ) { struct sieve_error_handler *ehandler; diff --git a/tests/extensions/include/execute.svtest b/tests/extensions/include/execute.svtest new file mode 100644 index 0000000000000000000000000000000000000000..54f834abed2a6f253cf4163d4ea355e027971e05 --- /dev/null +++ b/tests/extensions/include/execute.svtest @@ -0,0 +1,42 @@ +require "vnd.dovecot.testsuite"; + +test_set "message" text: +From: idiot@example.com +To: idiot@rename-it.nl +Subject: Frop! + +Frop. +. +; + +test "Actions Fileinto" { + test_mailbox :create "aaaa"; + test_mailbox :create "bbbb"; + + if not test_script_compile "execute/actions-fileinto.sieve" { + test_fail "failed to compile sieve script"; + } + + test_binary :save "actions-fileinto"; + test_binary :load "actions-fileinto"; + + if not test_script_run { + test_fail "failed to execute sieve script"; + } + + if not test_result_execute { + test_fail "failed to execute result"; + } + + test_message :folder "aaaa" 0; + + if not header "subject" "Frop!" { + test_fail "fileinto \"aaaa\" not executed."; + } + + test_message :folder "aaaa" 0; + + if not header "subject" "Frop!" { + test_fail "fileinto \"bbbb\" not executed."; + } +} diff --git a/tests/extensions/include/execute/actions-fileinto.sieve b/tests/extensions/include/execute/actions-fileinto.sieve new file mode 100644 index 0000000000000000000000000000000000000000..b0b81575756feb7f895e4aaf668de29b3a0cebe3 --- /dev/null +++ b/tests/extensions/include/execute/actions-fileinto.sieve @@ -0,0 +1,5 @@ +require "include"; + +include "actions-fileinto1"; +include "actions-fileinto2"; +include "actions-fileinto3"; diff --git a/tests/extensions/include/execute/included/actions-fileinto1.sieve b/tests/extensions/include/execute/included/actions-fileinto1.sieve new file mode 100644 index 0000000000000000000000000000000000000000..d4c5031f8b7a04bf1e5a4c92aa8e463a5413e186 --- /dev/null +++ b/tests/extensions/include/execute/included/actions-fileinto1.sieve @@ -0,0 +1,3 @@ +require "fileinto"; + +fileinto "aaaa"; diff --git a/tests/extensions/include/execute/included/actions-fileinto2.sieve b/tests/extensions/include/execute/included/actions-fileinto2.sieve new file mode 100644 index 0000000000000000000000000000000000000000..f73da0d1ea65cfd1efdf7224d76d98bd5a48c1a8 --- /dev/null +++ b/tests/extensions/include/execute/included/actions-fileinto2.sieve @@ -0,0 +1,4 @@ +require "fileinto"; + +fileinto "bbbb"; + diff --git a/tests/extensions/include/execute/included/actions-fileinto3.sieve b/tests/extensions/include/execute/included/actions-fileinto3.sieve new file mode 100644 index 0000000000000000000000000000000000000000..d4c5031f8b7a04bf1e5a4c92aa8e463a5413e186 --- /dev/null +++ b/tests/extensions/include/execute/included/actions-fileinto3.sieve @@ -0,0 +1,3 @@ +require "fileinto"; + +fileinto "aaaa";