From fe47287aa7acb53a40420cef866b8867ee440e15 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Sat, 13 Sep 2008 13:12:31 +0200
Subject: [PATCH] Testsuite: added final existing error tests.

---
 sieve/errors/address-errors.sieve             | 58 -----------------
 sieve/errors/address-part-errors.sieve        | 10 ---
 sieve/errors/encoded-character.sieve          |  5 --
 sieve/errors/envelope-errors.sieve            | 13 ----
 sieve/errors/header-errors.sieve              | 44 -------------
 sieve/errors/if-errors.sieve                  | 29 ---------
 sieve/errors/interesting.sieve                | 24 -------
 sieve/errors/keep-errors.sieve                | 16 -----
 sieve/errors/parse-errors.sieve               | 65 -------------------
 sieve/errors/require-errors.sieve             | 20 ------
 sieve/errors/size-errors.sieve                | 26 --------
 sieve/errors/stop-errors.sieve                | 16 -----
 sieve/errors/tag-errors.sieve                 | 41 ------------
 tests/compile/errors.svtest                   | 29 +++++++++
 .../compile/errors/out-address.sieve          |  0
 tests/compile/errors/tag.sieve                | 16 +++++
 16 files changed, 45 insertions(+), 367 deletions(-)
 delete mode 100644 sieve/errors/address-errors.sieve
 delete mode 100644 sieve/errors/address-part-errors.sieve
 delete mode 100644 sieve/errors/encoded-character.sieve
 delete mode 100644 sieve/errors/envelope-errors.sieve
 delete mode 100644 sieve/errors/header-errors.sieve
 delete mode 100644 sieve/errors/if-errors.sieve
 delete mode 100644 sieve/errors/interesting.sieve
 delete mode 100644 sieve/errors/keep-errors.sieve
 delete mode 100644 sieve/errors/parse-errors.sieve
 delete mode 100644 sieve/errors/require-errors.sieve
 delete mode 100644 sieve/errors/size-errors.sieve
 delete mode 100644 sieve/errors/stop-errors.sieve
 delete mode 100644 sieve/errors/tag-errors.sieve
 rename sieve/errors/out-address-errors.sieve => tests/compile/errors/out-address.sieve (100%)
 create mode 100644 tests/compile/errors/tag.sieve

diff --git a/sieve/errors/address-errors.sieve b/sieve/errors/address-errors.sieve
deleted file mode 100644
index fb4726f1d..000000000
--- a/sieve/errors/address-errors.sieve
+++ /dev/null
@@ -1,58 +0,0 @@
-require "comparator-i;ascii-numeric";
-
-if address :isnot :comparator "i;ascii-casemap" :localpart "From" "nico" {
-	discard;
-}
-
-if address :is :comparator 45 :localpart "From" "nico" {
-	discard;
-}
-
-if true :comparator "i;ascii-numeric" {
-  	keep;
-}
-
-if address :is :comparator "i;ascii-numeric" :localpart "From" 45 {
-	discard;
-}
-
-if address :is :comparator "i;ascii-numeric" :localpart 45 "nico" {
-	discard;
-}
-
-if address :is :comparator "i;ascii-numeric" :localpart "From" :tag {
-	discard;
-}
-
-if address :is :comparator "i;ascii-numeric" :localpart "From" {
-	discard;
-}
-
-if address :is :comparator "i;ascii-numeric" :localpart {
-	discard;
-}
-
-if address :localpart :is :comparator "i;ascii-casemap" "from" ["frop", "frop"] {
-	discard;
-}
-
-if address :localpart :hufter :is :comparator "i;ascii-casemap" "frop" ["frop", "frop"] {
-        discard;
-}
-
-if address :is "frop" "frml" {
-	keep;
-}
-
-if address :is "reply-to" "frml" {
-	keep;
-}
-
-if address :is ["to", "frop"] "frml" {
-	keep;
-}
-
-if address :is ["to", "reply-to"] "frml" {
-	keep;
-}
-
diff --git a/sieve/errors/address-part-errors.sieve b/sieve/errors/address-part-errors.sieve
deleted file mode 100644
index 9a49af08a..000000000
--- a/sieve/errors/address-part-errors.sieve
+++ /dev/null
@@ -1,10 +0,0 @@
-if address :all :comparator "i;octet" :domain "from" "STEPHAN" {
-	discard;
-
-	if address :localpart :domain :comparator "i;octet" "from" "drunksnipers.com" {
-		keep;
-	}
-	stop;
-}
-
-keep;
diff --git a/sieve/errors/encoded-character.sieve b/sieve/errors/encoded-character.sieve
deleted file mode 100644
index f8a7686df..000000000
--- a/sieve/errors/encoded-character.sieve
+++ /dev/null
@@ -1,5 +0,0 @@
-require "encoded-character";
-require "fileinto";
-
-fileinto "INBOX.${unicode:200000}";
-fileinto "INBOX.${Unicode:DF01}";
diff --git a/sieve/errors/envelope-errors.sieve b/sieve/errors/envelope-errors.sieve
deleted file mode 100644
index e5b7b1020..000000000
--- a/sieve/errors/envelope-errors.sieve
+++ /dev/null
@@ -1,13 +0,0 @@
-require "envelope";
-
-if envelope :is "to" "frop@rename-it.nl" {
-}
-
-if envelope :is "frop" "frop@rename-it.nl" {
-}
-
-if envelope :is ["to","from"] "frop@rename-it.nl" {
-}
-
-if envelope :is ["to","frop"] "frop@rename-it.nl" {
-}
diff --git a/sieve/errors/header-errors.sieve b/sieve/errors/header-errors.sieve
deleted file mode 100644
index ac6108ba1..000000000
--- a/sieve/errors/header-errors.sieve
+++ /dev/null
@@ -1,44 +0,0 @@
-require "comparator-i;ascii-numeric";
-
-if header :isnot :comparator "i;ascii-casemap" "From" "nico" {
-	discard;
-}
-
-if header :is :comparator 45 "From" "nico" {
-	discard;
-}
-
-if header :all :comparator "i;ascii-numeric" {
-  	keep;
-}
-
-if header :is :comparator "i;ascii-numeric" "From" 45 {
-	discard;
-}
-
-if header :is :comparator "i;ascii-numeric" 45 "nico" {
-	discard;
-}
-
-if header :is :comparator "i;ascii-numeric" "From" :tag {
-	discard;
-}
-
-if header :is :comparator "i;ascii-numeric" "From" {
-	discard;
-}
-
-if header :is :comparator "i;ascii-numeric" {
-	discard;
-}
-
-if header :is :comparator "i;ascii-casemap" "frop" ["frop", "frop"] {
-	discard;
-}
-
-if header :hufter :is :comparator "i;ascii-casemap" "frop" ["frop", "frop"] {
-        discard;
-}
-
-if header "frop" "frop" true {
-}
diff --git a/sieve/errors/if-errors.sieve b/sieve/errors/if-errors.sieve
deleted file mode 100644
index 5aed28b65..000000000
--- a/sieve/errors/if-errors.sieve
+++ /dev/null
@@ -1,29 +0,0 @@
-if "frop" true;
-if true;
-if {
-  keep;
-}
-if ( false, false, true ) {
-  keep;
-}
-if [ "false", "false", "false" ] {
-  stop;
-}
-elsi;
-elsif true {
-  keep;
-}
-elsif true {
-  keep;
-}
-if true {
-  keep;
-} else {
-  stop;
-} elsif {
-  stop;
-}
-stop;
-else {
-  keep;
-}
diff --git a/sieve/errors/interesting.sieve b/sieve/errors/interesting.sieve
deleted file mode 100644
index 2dd1f35f3..000000000
--- a/sieve/errors/interesting.sieve
+++ /dev/null
@@ -1,24 +0,0 @@
-require ["fileinto"];
-require ["copy", "relational"];
-require "envelope";
-require "regex";
-
-va
-
-if header :is "To" "Stephan \"Nico\" Bosch <nico@voorbeeld.nl>" {
-	fileinto "INBOX.stephan";	
-} elsif header :matches "To" "*@voorbeeld.nl" {
-	fileinto "INBOX.vestingbar";
-}
-
-if envelope :isnot :comperator "i;ascii-casemap" :localpart "From" "nico" {
- 	discard;
-}
-
-if :disabled true {
-	break;
-}
-
-if header :comparator "i;octet" :is :comparator "i;ascii-casemap" {
-	frop;
-}
diff --git a/sieve/errors/keep-errors.sieve b/sieve/errors/keep-errors.sieve
deleted file mode 100644
index 8353f14b6..000000000
--- a/sieve/errors/keep-errors.sieve
+++ /dev/null
@@ -1,16 +0,0 @@
-keep "frop";
-keep 13;
-keep [ "frop", "frop" ];
-keep true;
-keep true {
-  keep;
-}
-keep "frop" true {
-  keep;
-}
-keep "frop" :frop true {
-  keep;
-}
-keep {
-  keep;
-}
diff --git a/sieve/errors/parse-errors.sieve b/sieve/errors/parse-errors.sieve
deleted file mode 100644
index 45af2c60e..000000000
--- a/sieve/errors/parse-errors.sieve
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# Example Sieve Filter
-# Declare any optional features or extension used by the script
-#
-require ["fileinto", "reject"];
-
-#
-# Reject any large messages (note that the four leading dots get
-# "stuffed" to three)
-#
-if size :over 1M ^^
-    {    
-    reject text:
-Please do not send me large attachments.
-Put your file on a server and send me the URL.
-Thank you.
-.... Fred
-.
-;
-    stop;
-    }
-#
-
-# Handle messages from known mailing lists
-# Move messages from IETF filter discussion list to filter folder
-#
-if header :is "Sender" "owner-ietf-mta-filters@imc.org"
-    {
-    fileinto "filter";  # move to "filter" folder
-    }
-#
-# Keep all messages to or from people in my company
-#
-elsif address :domain :is ["From", "To" "example.com"
-    {
-    keep;               # keep in "In" folder
-    }
-
-#
-# Try and catch unsolicited email.  If a message is not to me,
-# or it contains a subject known to be spam, file it away.
-#
-elsif anyof (not address :all :contains
-         ["To", "Cc", "Bcc" "me@example.com",
-     header :matches "subject"
-         ["*make*money*fast*", "*university*dipl*mas*"])
-    {
-    # If message header does not contain my address,
-    # it's from a list.
-    fileinto "spam";   # move to "spam" folder
-    }
- else
-    {
-    # Move all other (non-company) mail to "personal"
-    # folder.
-    fileinto "personal";
-    }
-
-
-if { 
-
-# 11111
-# dddd
-
-$$%%
diff --git a/sieve/errors/require-errors.sieve b/sieve/errors/require-errors.sieve
deleted file mode 100644
index 0fa463186..000000000
--- a/sieve/errors/require-errors.sieve
+++ /dev/null
@@ -1,20 +0,0 @@
-require "fileinto";
-require;
-require "fileinto" "vacation";
-require 45;
-require ["frop", "friep", "frml"];
-
-require "dovecot.test" true;
-
-requir;
-require "frop";
-
-require "dovecot.test" { 
-  keep;
-}
-
-if true {
-  require "relional";
-}
-
-require "copy";
diff --git a/sieve/errors/size-errors.sieve b/sieve/errors/size-errors.sieve
deleted file mode 100644
index 678dda18a..000000000
--- a/sieve/errors/size-errors.sieve
+++ /dev/null
@@ -1,26 +0,0 @@
-size;
-
-if size {
-}
-
-if size 45 {
-	discard;
-}
-
-if size :over 34K {
-	stop;
-}
-
-if size :under 34M {
-	stop;
-}
-
-if size :under :over 34 {
-	keep;
-}
-
-if size :over :over 45M {
-	if size 34M :over {
-		stop;
-	}
-}
diff --git a/sieve/errors/stop-errors.sieve b/sieve/errors/stop-errors.sieve
deleted file mode 100644
index a2b43d76d..000000000
--- a/sieve/errors/stop-errors.sieve
+++ /dev/null
@@ -1,16 +0,0 @@
-stop "frop";
-stop 13;
-stop [ "frop", "frop" ];
-stop true;
-stop true {
-  stop;
-}
-stop "frop" true {
-  stop;
-}
-stop "frop" :frop true {
-  stop;
-}
-stop {
-  stop;
-}
diff --git a/sieve/errors/tag-errors.sieve b/sieve/errors/tag-errors.sieve
deleted file mode 100644
index 34b2267e7..000000000
--- a/sieve/errors/tag-errors.sieve
+++ /dev/null
@@ -1,41 +0,0 @@
-require "envelope";
-
-if envelope :isnot :comparator "i;ascii-casemap" :localpart "From" "nico" {
-	discard;
-}
-
-if envelope :is :comparator 45 :localpart "From" "nico" {
-	discard;
-}
-
-if true :comparator "i;ascii-numeric" {
-  	keep;
-}
-
-if envelope :is :comparator "i;ascii-numeric" :localpart "From" 45 {
-	discard;
-}
-
-if envelope :is :comparator "i;ascii-numeric" :localpart 45 "nico" {
-	discard;
-}
-
-if envelope :is :comparator "i;ascii-numeric" :localpart "From" :tag {
-	discard;
-}
-
-if envelope :is :comparator "i;ascii-numeric" :localpart "From" {
-	discard;
-}
-
-if envelope :is :comparator "i;ascii-numeric" :localpart {
-	discard;
-}
-
-if envelope :localpart :is :comparator "i;ascii-casemap" "frop" ["frop", "frop"] {
-	discard;
-}
-
-if envelope :localpart :hufter :is :comparator "i;ascii-casemap" "frop" ["frop", "frop"] {
-        discard;
-}
diff --git a/tests/compile/errors.svtest b/tests/compile/errors.svtest
index af68e17e8..024b41f20 100644
--- a/tests/compile/errors.svtest
+++ b/tests/compile/errors.svtest
@@ -284,3 +284,32 @@ test "Encoded-character errors (FIXME: count only)" {
     }
 }
 
+/*
+ * Outgoing address errors
+ */
+
+test "Outgoing address errors (FIXME: count only)" {
+    if test_compile "errors/out-address.sieve" {
+        test_fail "compile should have failed.";
+    }
+
+    if not test_error :count "eq" :comparator "i;ascii-numeric" "13" {
+        test_fail "wrong number of errors reported";
+    }
+}
+
+
+/*
+ * Tagged argument errors
+ */
+
+test "Tagged argument errors (FIXME: count only)" {
+    if test_compile "errors/tag.sieve" {
+        test_fail "compile should have failed.";
+    }
+
+    if not test_error :count "eq" :comparator "i;ascii-numeric" "3" {
+        test_fail "wrong number of errors reported";
+    }
+}
+
diff --git a/sieve/errors/out-address-errors.sieve b/tests/compile/errors/out-address.sieve
similarity index 100%
rename from sieve/errors/out-address-errors.sieve
rename to tests/compile/errors/out-address.sieve
diff --git a/tests/compile/errors/tag.sieve b/tests/compile/errors/tag.sieve
new file mode 100644
index 000000000..d285cf9c7
--- /dev/null
+++ b/tests/compile/errors/tag.sieve
@@ -0,0 +1,16 @@
+/*
+ * Tag errors
+ * 
+ * Total errors: 2 (+1 = 3)
+ */
+
+# Unknown tag (1)
+if envelope :isnot :comparator "i;ascii-casemap" :localpart "From" "nico" {
+	discard;
+}
+
+# Spurious tag (1)
+if true :comparator "i;ascii-numeric" {
+  	keep;
+}
+
-- 
GitLab