summaryrefslogtreecommitdiffstats
path: root/pigeonhole/tests/extensions/mime/errors
diff options
context:
space:
mode:
Diffstat (limited to 'pigeonhole/tests/extensions/mime/errors')
-rw-r--r--pigeonhole/tests/extensions/mime/errors/address-mime-tag.sieve38
-rw-r--r--pigeonhole/tests/extensions/mime/errors/break.sieve157
-rw-r--r--pigeonhole/tests/extensions/mime/errors/exists-mime-tag.sieve43
-rw-r--r--pigeonhole/tests/extensions/mime/errors/extracttext-nofep.sieve4
-rw-r--r--pigeonhole/tests/extensions/mime/errors/extracttext-novar.sieve6
-rw-r--r--pigeonhole/tests/extensions/mime/errors/extracttext.sieve42
-rw-r--r--pigeonhole/tests/extensions/mime/errors/foreverypart.sieve45
-rw-r--r--pigeonhole/tests/extensions/mime/errors/header-mime-tag.sieve100
-rw-r--r--pigeonhole/tests/extensions/mime/errors/limits-include.sieve6
-rw-r--r--pigeonhole/tests/extensions/mime/errors/limits.sieve13
10 files changed, 454 insertions, 0 deletions
diff --git a/pigeonhole/tests/extensions/mime/errors/address-mime-tag.sieve b/pigeonhole/tests/extensions/mime/errors/address-mime-tag.sieve
new file mode 100644
index 0000000..7adb7bc
--- /dev/null
+++ b/pigeonhole/tests/extensions/mime/errors/address-mime-tag.sieve
@@ -0,0 +1,38 @@
+require "mime";
+
+## Address
+
+# No error
+if address :contains :mime "To" "frop@example.com" {
+ discard;
+}
+
+# No error
+if address :anychild :contains :mime "To" "frop@example.com" {
+ discard;
+}
+
+# 1: Bare anychild option
+if address :anychild "To" "frop@example.com" {
+ discard;
+}
+
+# 2: Inappropriate option
+if address :mime :anychild :type "To" "frop@example.com" {
+ discard;
+}
+
+# 3: Inappropriate option
+if address :mime :anychild :subtype "To" "frop@example.com" {
+ discard;
+}
+
+# 4: Inappropriate option
+if address :mime :anychild :contenttype "To" "frop@example.com" {
+ discard;
+}
+
+# 5: Inappropriate option
+if address :mime :anychild :param "frop" "To" "frop@example.com" {
+ discard;
+}
diff --git a/pigeonhole/tests/extensions/mime/errors/break.sieve b/pigeonhole/tests/extensions/mime/errors/break.sieve
new file mode 100644
index 0000000..1858673
--- /dev/null
+++ b/pigeonhole/tests/extensions/mime/errors/break.sieve
@@ -0,0 +1,157 @@
+require "foreverypart";
+
+foreverypart :name "frop" {
+ # 1: Spurious tag
+ break :tag;
+
+ # 2: Spurious tests
+ break true;
+
+ # 3: Spurious tests
+ break anyof(true, false);
+
+ # 4: Bare string
+ break "frop";
+
+ # 5: Bare string-list
+ break ["frop", "friep"];
+
+ # 6: Several bad arguments
+ break 13 ["frop", "friep"];
+
+ # 7: Spurious additional tag
+ break :name "frop" :friep;
+
+ # 8: Spurious additional string
+ break :name "frop" "friep";
+
+ # 9: Bad name
+ break :name 13;
+
+ # 10: Bad name
+ break :name ["frop", "friep"];
+
+ # No error
+ break;
+
+ # No error
+ break :name "frop";
+
+ # No error
+ if exists "frop" {
+ break;
+ }
+
+ # No error
+ if exists "frop" {
+ break :name "frop";
+ }
+
+ # No error
+ foreverypart {
+ break :name "frop";
+ }
+
+ # No error
+ foreverypart :name "friep" {
+ break :name "frop";
+ }
+
+ # No error
+ foreverypart :name "friep" {
+ break :name "friep";
+ }
+
+ # No error
+ foreverypart :name "friep" {
+ break;
+ }
+
+ # No error
+ foreverypart {
+ if exists "frop" {
+ break :name "frop";
+ }
+ }
+
+ # No error
+ foreverypart :name "friep" {
+ if exists "frop" {
+ break :name "frop";
+ }
+ }
+
+ # No error
+ foreverypart :name "friep" {
+ if exists "frop" {
+ break :name "friep";
+ }
+ }
+
+ # No error
+ foreverypart :name "friep" {
+ if exists "frop" {
+ break;
+ }
+ }
+}
+
+# 11: Outside loop
+break;
+
+# 12: Outside loop
+if exists "frop" {
+ break;
+}
+
+# 13: Outside loop
+break :name "frop";
+
+# 14: Outside loop
+if exists "frop" {
+ break :name "frop";
+}
+
+# 15: Bad name
+foreverypart {
+ break :name "frop";
+}
+
+# 16: Bad name
+foreverypart {
+ if exists "frop" {
+ break :name "frop";
+ }
+}
+
+# 17: Bad name
+foreverypart :name "friep" {
+ break :name "frop";
+}
+
+# 18: Bad name
+foreverypart :name "friep" {
+ if exists "frop" {
+ break :name "frop";
+ }
+}
+
+# 19: Bad name
+foreverypart :name "friep" {
+ foreverypart :name "frop" {
+ break :name "frml";
+ }
+}
+
+# 20: Bad name
+foreverypart :name "friep" {
+ foreverypart :name "frop" {
+ if exists "frop" {
+ break :name "frml";
+ }
+ }
+}
+
+
+
+
diff --git a/pigeonhole/tests/extensions/mime/errors/exists-mime-tag.sieve b/pigeonhole/tests/extensions/mime/errors/exists-mime-tag.sieve
new file mode 100644
index 0000000..84c86a7
--- /dev/null
+++ b/pigeonhole/tests/extensions/mime/errors/exists-mime-tag.sieve
@@ -0,0 +1,43 @@
+require "mime";
+
+## Exists
+
+# No error
+if exists :mime "To" {
+ discard;
+}
+
+# No error
+if exists :anychild :mime "To" {
+ discard;
+}
+
+# 1: Inappropriate option
+if exists :anychild "To" {
+ discard;
+}
+
+# 2: Inappropriate option
+if exists :mime :type "To" {
+ discard;
+}
+
+# 3: Inappropriate option
+if exists :mime :subtype "To" {
+ discard;
+}
+
+# 4: Inappropriate option
+if exists :mime :contenttype "To" {
+ discard;
+}
+
+# 5: Inappropriate option
+if exists :mime :param ["frop", "friep"] "To" {
+ discard;
+}
+
+
+
+
+
diff --git a/pigeonhole/tests/extensions/mime/errors/extracttext-nofep.sieve b/pigeonhole/tests/extensions/mime/errors/extracttext-nofep.sieve
new file mode 100644
index 0000000..c38b228
--- /dev/null
+++ b/pigeonhole/tests/extensions/mime/errors/extracttext-nofep.sieve
@@ -0,0 +1,4 @@
+require "extracttext";
+require "variables";
+
+keep;
diff --git a/pigeonhole/tests/extensions/mime/errors/extracttext-novar.sieve b/pigeonhole/tests/extensions/mime/errors/extracttext-novar.sieve
new file mode 100644
index 0000000..8e2a378
--- /dev/null
+++ b/pigeonhole/tests/extensions/mime/errors/extracttext-novar.sieve
@@ -0,0 +1,6 @@
+require "extracttext";
+require "foreverypart";
+
+foreverypart {
+ extracttext "frop";
+}
diff --git a/pigeonhole/tests/extensions/mime/errors/extracttext.sieve b/pigeonhole/tests/extensions/mime/errors/extracttext.sieve
new file mode 100644
index 0000000..f8af1c9
--- /dev/null
+++ b/pigeonhole/tests/extensions/mime/errors/extracttext.sieve
@@ -0,0 +1,42 @@
+require "extracttext";
+require "variables";
+require "foreverypart";
+
+# 1: Used outside foreverypart
+extracttext :first 10 "data";
+
+foreverypart {
+ # 2: Missing arguments
+ extracttext;
+
+ # 3: Bad arguments
+ extracttext 1;
+
+ # 4: Bad arguments
+ extracttext ["frop", "friep"];
+
+ # 5: Unknown tag
+ extracttext :frop "frop";
+
+ # 6: Invalid variable name
+ extracttext "${frop}";
+
+ # Not an error
+ extracttext "\n\a\m\e";
+
+ # 7: Trying to assign match variable
+ extracttext "0";
+
+ # Not an error
+ extracttext :lower "frop";
+
+ # 8: Bad ":first" tag
+ extracttext :first "frop";
+
+ # 9: Bad ":first" tag
+ extracttext :first "frop" "friep";
+
+ # 10: Bad ":first" tag
+ extracttext :first ["frop", "friep"] "frml";
+}
+
diff --git a/pigeonhole/tests/extensions/mime/errors/foreverypart.sieve b/pigeonhole/tests/extensions/mime/errors/foreverypart.sieve
new file mode 100644
index 0000000..38a28d4
--- /dev/null
+++ b/pigeonhole/tests/extensions/mime/errors/foreverypart.sieve
@@ -0,0 +1,45 @@
+require "foreverypart";
+
+# 1: No block
+foreverypart;
+
+# 2: Spurious tag
+foreverypart :tag { }
+
+# 3: Spurious tests
+foreverypart true { }
+
+# 4: Spurious tests
+foreverypart anyof(true, false) { }
+
+# 5: Bare string
+foreverypart "frop" { }
+
+# 6: Bare string-list
+foreverypart ["frop", "friep"] { }
+
+# 7: Several bad arguments
+foreverypart 13 ["frop", "friep"] { }
+
+# 8: Spurious additional tag
+foreverypart :name "frop" :friep { }
+
+# 9: Spurious additional string
+foreverypart :name "frop" "friep" { }
+
+# 10: Bad name
+foreverypart :name 13 { }
+
+# 11: Bad name
+foreverypart :name ["frop", "friep"] { }
+
+# No error
+foreverypart { keep; }
+
+# No error
+foreverypart :name "frop" { keep; }
+
+# No error
+foreverypart :name "frop" { foreverypart { keep; } }
+
+
diff --git a/pigeonhole/tests/extensions/mime/errors/header-mime-tag.sieve b/pigeonhole/tests/extensions/mime/errors/header-mime-tag.sieve
new file mode 100644
index 0000000..85782af
--- /dev/null
+++ b/pigeonhole/tests/extensions/mime/errors/header-mime-tag.sieve
@@ -0,0 +1,100 @@
+require "mime";
+
+## Header
+
+# No error
+if header :contains :mime "Content-Type" "text/plain" {
+ discard;
+}
+
+# No error
+if header :mime :type "Content-Type" "text" {
+ discard;
+}
+
+# No error
+if header :mime :subtype "Content-Type" "plain" {
+ discard;
+}
+
+# No error
+if header :mime :contenttype "Content-Type" "text/plain" {
+ discard;
+}
+
+# No error
+if header :mime :param ["frop", "friep"] "Content-Type" "frml" {
+ discard;
+}
+
+# No error
+if header :anychild :contains :mime "Content-Type" "text/plain" {
+ discard;
+}
+
+# No error
+if header :mime :anychild :type "Content-Type" "text" {
+ discard;
+}
+
+# No error
+if header :mime :subtype :anychild "Content-Type" "plain" {
+ discard;
+}
+
+# No error
+if header :anychild :mime :contenttype "Content-Type" "text/plain" {
+ discard;
+}
+
+# No error
+if header :mime :param ["frop", "friep"] :anychild "Content-Type" "frml" {
+ discard;
+}
+
+# 1: Bare anychild option
+if header :anychild "Content-Type" "frml" {
+ discard;
+}
+
+# 2: Bare mime option
+if header :type "Content-Type" "frml" {
+ discard;
+}
+
+# 3: Bare mime option
+if header :subtype "Content-Type" "frml" {
+ discard;
+}
+
+# 4: Bare mime option
+if header :contenttype "Content-Type" "frml" {
+ discard;
+}
+
+# 5: Bare mime option
+if header :param "frop" "Content-Type" "frml" {
+ discard;
+}
+
+# 6: Multiple option tags
+if header :mime :type :subtype "Content-Type" "frml" {
+ discard;
+}
+
+# 7: Bad param argument
+if header :mime :param 13 "Content-Type" "frml" {
+ discard;
+}
+
+# 8: Missing param argument
+if header :mime :param :anychild "Content-Type" "frml" {
+ discard;
+}
+
+# 9: Missing param argument
+if header :mime :param :frop "Content-Type" "frml" {
+ discard;
+}
+
+
diff --git a/pigeonhole/tests/extensions/mime/errors/limits-include.sieve b/pigeonhole/tests/extensions/mime/errors/limits-include.sieve
new file mode 100644
index 0000000..ef92456
--- /dev/null
+++ b/pigeonhole/tests/extensions/mime/errors/limits-include.sieve
@@ -0,0 +1,6 @@
+require "foreverypart";
+require "include";
+
+foreverypart :name "frop" {
+ include "include-loop-2";
+}
diff --git a/pigeonhole/tests/extensions/mime/errors/limits.sieve b/pigeonhole/tests/extensions/mime/errors/limits.sieve
new file mode 100644
index 0000000..0add1c3
--- /dev/null
+++ b/pigeonhole/tests/extensions/mime/errors/limits.sieve
@@ -0,0 +1,13 @@
+require "foreverypart";
+
+foreverypart :name "frop" {
+ foreverypart :name "friep" {
+ foreverypart :name "frml" {
+ foreverypart {
+ foreverypart {
+ break;
+ }
+ }
+ }
+ }
+}