From a83809186c7151224c6104a1970ab37af3bd17c5 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Sat, 11 Apr 2009 00:10:37 +0200
Subject: [PATCH] Include: added various tests to the testsuite.

---
 Makefile.am                                   |  2 ++
 .../included-global/rfc-ex1-spam_tests.sieve  |  7 +++++++
 .../included/rfc-ex1-always_allow.sieve       |  8 +++++++
 .../included/rfc-ex1-mailing_lists.sieve      | 10 +++++++++
 .../include/included/rfc-ex1-spam_tests.sieve | 10 +++++++++
 .../included/rfc-ex2-spam_filter_script.sieve |  8 +++++++
 .../extensions/include/included/twice-1.sieve |  7 +++++++
 .../extensions/include/included/twice-2.sieve |  8 +++++++
 .../extensions/include/rfc-ex1-default.sieve  |  6 ++++++
 .../extensions/include/rfc-ex2-default.sieve  | 21 +++++++++++++++++++
 tests/extensions/include/rfc.svtest           | 13 ++++++++++++
 tests/extensions/include/twice.svtest         | 20 ++++++++++++++++++
 12 files changed, 120 insertions(+)
 create mode 100644 tests/extensions/include/included-global/rfc-ex1-spam_tests.sieve
 create mode 100644 tests/extensions/include/included/rfc-ex1-always_allow.sieve
 create mode 100644 tests/extensions/include/included/rfc-ex1-mailing_lists.sieve
 create mode 100644 tests/extensions/include/included/rfc-ex1-spam_tests.sieve
 create mode 100644 tests/extensions/include/included/rfc-ex2-spam_filter_script.sieve
 create mode 100644 tests/extensions/include/included/twice-1.sieve
 create mode 100644 tests/extensions/include/included/twice-2.sieve
 create mode 100644 tests/extensions/include/rfc-ex1-default.sieve
 create mode 100644 tests/extensions/include/rfc-ex2-default.sieve
 create mode 100644 tests/extensions/include/rfc.svtest
 create mode 100644 tests/extensions/include/twice.svtest

diff --git a/Makefile.am b/Makefile.am
index 064df0458..02835571f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -56,6 +56,8 @@ test_cases = \
 	tests/extensions/include/errors.svtest \
 	tests/extensions/include/variables.svtest \
 	tests/extensions/include/once.svtest \
+	tests/extensions/include/twice.svtest \
+	tests/extensions/include/rfc.svtest \
 	tests/extensions/imap4flags/basic.svtest \
 	tests/extensions/imap4flags/hasflag.svtest \
 	tests/extensions/imap4flags/errors.svtest \
diff --git a/tests/extensions/include/included-global/rfc-ex1-spam_tests.sieve b/tests/extensions/include/included-global/rfc-ex1-spam_tests.sieve
new file mode 100644
index 000000000..340ceaf8c
--- /dev/null
+++ b/tests/extensions/include/included-global/rfc-ex1-spam_tests.sieve
@@ -0,0 +1,7 @@
+require ["reject"];
+
+if anyof (header :contains "Subject" "$$",
+	header :contains "Subject" "Make money")
+{
+	reject "Not wanted";
+}
diff --git a/tests/extensions/include/included/rfc-ex1-always_allow.sieve b/tests/extensions/include/included/rfc-ex1-always_allow.sieve
new file mode 100644
index 000000000..dcb3413af
--- /dev/null
+++ b/tests/extensions/include/included/rfc-ex1-always_allow.sieve
@@ -0,0 +1,8 @@
+if header :is "From" "boss@example.com"
+{
+     keep;
+}
+elsif header :is "From" "ceo@example.com"
+{
+     keep;
+}
diff --git a/tests/extensions/include/included/rfc-ex1-mailing_lists.sieve b/tests/extensions/include/included/rfc-ex1-mailing_lists.sieve
new file mode 100644
index 000000000..de148a194
--- /dev/null
+++ b/tests/extensions/include/included/rfc-ex1-mailing_lists.sieve
@@ -0,0 +1,10 @@
+require ["fileinto"];
+
+if header :is "Sender" "owner-ietf-mta-filters@imc.org"
+{
+     fileinto "lists.sieve";
+}
+elsif header :is "Sender" "owner-ietf-imapext@imc.org"
+{
+     fileinto "lists.imapext";
+}
diff --git a/tests/extensions/include/included/rfc-ex1-spam_tests.sieve b/tests/extensions/include/included/rfc-ex1-spam_tests.sieve
new file mode 100644
index 000000000..7916064ef
--- /dev/null
+++ b/tests/extensions/include/included/rfc-ex1-spam_tests.sieve
@@ -0,0 +1,10 @@
+require ["reject"];
+
+if header :contains "Subject" "XXXX"
+{
+	reject "Not wanted";
+}
+elsif header :is "From" "money@example.com"
+{
+	reject "Not wanted";
+}
diff --git a/tests/extensions/include/included/rfc-ex2-spam_filter_script.sieve b/tests/extensions/include/included/rfc-ex2-spam_filter_script.sieve
new file mode 100644
index 000000000..01ab98463
--- /dev/null
+++ b/tests/extensions/include/included/rfc-ex2-spam_filter_script.sieve
@@ -0,0 +1,8 @@
+require ["variables", "include"];
+global ["test", "test_mailbox"];
+
+if header :contains "Subject" "${test}"
+{
+	set "test_mailbox" "spam-${test}";
+}
+
diff --git a/tests/extensions/include/included/twice-1.sieve b/tests/extensions/include/included/twice-1.sieve
new file mode 100644
index 000000000..a770a3b33
--- /dev/null
+++ b/tests/extensions/include/included/twice-1.sieve
@@ -0,0 +1,7 @@
+require "include";
+require "variables";
+
+global "result";
+
+set "result" "${result} TWO";
+
diff --git a/tests/extensions/include/included/twice-2.sieve b/tests/extensions/include/included/twice-2.sieve
new file mode 100644
index 000000000..cc907b013
--- /dev/null
+++ b/tests/extensions/include/included/twice-2.sieve
@@ -0,0 +1,8 @@
+require "include";
+require "variables";
+
+global "result";
+
+set "result" "${result} THREE";
+
+include "twice-1.sieve";
diff --git a/tests/extensions/include/rfc-ex1-default.sieve b/tests/extensions/include/rfc-ex1-default.sieve
new file mode 100644
index 000000000..5a8cb524d
--- /dev/null
+++ b/tests/extensions/include/rfc-ex1-default.sieve
@@ -0,0 +1,6 @@
+require ["include"];
+
+include :personal "rfc-ex1-always_allow";
+include :global "rfc-ex1-spam_tests";
+include :personal "rfc-ex1-spam_tests";
+include :personal "rfc-ex1-mailing_lists";
diff --git a/tests/extensions/include/rfc-ex2-default.sieve b/tests/extensions/include/rfc-ex2-default.sieve
new file mode 100644
index 000000000..7124e03af
--- /dev/null
+++ b/tests/extensions/include/rfc-ex2-default.sieve
@@ -0,0 +1,21 @@
+require ["variables", "include", "relational", "fileinto"];
+global "test";
+global "test-mailbox";
+
+# The included script may contain repetitive code that is
+# effectively a subroutine that can be factored out.
+set "test" "$$";
+include "rfc-ex2-spam_filter_script";
+
+set "test" "Make money";
+include "rfc-ex2-spam_filter_script";
+
+# Message will be filed according to the test that matched last.
+if string :count "eq" "${test_mailbox}" "1"
+{
+	fileinto "INBOX${test_mailbox}";
+	stop;
+}
+
+# If nothing matched, the message is implicitly kept.
+
diff --git a/tests/extensions/include/rfc.svtest b/tests/extensions/include/rfc.svtest
new file mode 100644
index 000000000..00908acd2
--- /dev/null
+++ b/tests/extensions/include/rfc.svtest
@@ -0,0 +1,13 @@
+require "vnd.dovecot.testsuite";
+
+test "RFC example 1" {
+	if not test_script_compile "rfc-ex1-default.sieve" {
+		test_fail "failed to compile sieve script";
+	}
+}
+
+test "RFC example 2" {
+	if not test_script_compile "rfc-ex2-default.sieve" {
+		test_fail "failed to compile sieve script";
+	}
+}
diff --git a/tests/extensions/include/twice.svtest b/tests/extensions/include/twice.svtest
new file mode 100644
index 000000000..5cd5da214
--- /dev/null
+++ b/tests/extensions/include/twice.svtest
@@ -0,0 +1,20 @@
+require "vnd.dovecot.testsuite";
+require "include";
+require "variables";
+
+global "result";
+
+set "result" "ONE";
+
+test "Twice included" {
+	include "twice-1";
+	include "twice-2";
+
+	if string "${result}" "ONE TWO THREE" {
+		test_fail "duplicate include failed";
+	}
+
+	if not string "${result}" "ONE TWO THREE TWO" {
+		test_fail "unexpected result: ${result}";
+	}
+}
-- 
GitLab