diff --git a/tests/extensions/imapflags/execute.svtest b/tests/extensions/imapflags/execute.svtest new file mode 100644 index 0000000000000000000000000000000000000000..5ecbb2ca8490a82ed763077d74f077ecd7956605 --- /dev/null +++ b/tests/extensions/imapflags/execute.svtest @@ -0,0 +1,15 @@ +require "vnd.dovecot.testsuite"; + +/* + * Execution testing (currently just meant to trigger any segfaults) + */ + +test "Flags Side Effect" { + if not test_compile "execute/flags-side-effect.sieve" { + test_fail "script compile failed"; + } + + if not test_execute { + test_fail "script execute failed"; + } +} diff --git a/tests/extensions/imapflags/execute/flags-side-effect.sieve b/tests/extensions/imapflags/execute/flags-side-effect.sieve new file mode 100644 index 0000000000000000000000000000000000000000..f7a91d44981ba79f490f0d33645054c4176ca534 --- /dev/null +++ b/tests/extensions/imapflags/execute/flags-side-effect.sieve @@ -0,0 +1,18 @@ +require "imap4flags"; +require "fileinto"; + +/* + * When keep/fileinto is used multiple times in a script and duplicate + * message elimination is performed, the last flag list value MUST win. + */ + +setflag "IMPLICIT"; + +fileinto :flags "\\Seen \\Draft" "INBOX.Junk"; +fileinto :flags "NONSENSE" "INBOX.Junk"; + +keep; +keep :flags "\\Seen"; + +fileinto :flags "\\Seen" "Inbox.Nonsense"; +fileinto "Inbox.Nonsense";