diff --git a/TODO b/TODO index f32a61568806ba7892df357154369bc4ee6ae7e1..997aa4253d3d65f3a96372b844cedb0809c6f2b4 100644 --- a/TODO +++ b/TODO @@ -2,7 +2,6 @@ Current activities: * Implement editheader extension - Implement configurable limit on header value length - - Add command syntax checks to the test suite. Parallel plugin-based efforts: diff --git a/tests/extensions/editheader/errors.svtest b/tests/extensions/editheader/errors.svtest index 00a144f2ee51ff9399957848a7dceafb3ad559bd..fb27754b57a3c304f73197168d440ff4d41bfb11 100644 --- a/tests/extensions/editheader/errors.svtest +++ b/tests/extensions/editheader/errors.svtest @@ -66,6 +66,16 @@ test "Invalid field value" { } } +test "Invalid field value (FIXME: count only)" { + if test_script_compile "errors/command-syntax.sieve" { + test_fail "compile should have failed"; + } + + if not test_error :count "eq" :comparator "i;ascii-numeric" "10" { + test_fail "wrong number of errors reported"; + } +} + test_set "message" text: From: stephan@example.com To: tss@example.com diff --git a/tests/extensions/editheader/errors/command-syntax.sieve b/tests/extensions/editheader/errors/command-syntax.sieve new file mode 100644 index 0000000000000000000000000000000000000000..34d7f1e591dc878955aafc9afa8a81940939fd33 --- /dev/null +++ b/tests/extensions/editheader/errors/command-syntax.sieve @@ -0,0 +1,42 @@ +require "editheader"; + +/* "addheader" [":last"] <field-name: string> <value: string> + */ + +# 1: missing field name and value +addheader; + +# 2: missing value +addheader "x-frop"; + +# 3: value not a string; number +addheader "x-frop" 2; + +# 4: value not a string; list +addheader "x-frop" ["frop"]; + +# 5: strange tag +addheader :tag "x-frop" "frop"; + +/* "deleteheader" [":index" <fieldno: number> [":last"]] + * [COMPARATOR] [MATCH-TYPE] + * <field-name: string> + * [<value-patterns: string-list>] + */ + +# 6: missing field name +deleteheader; + +# 7: :last tag without index +deleteheader :last "x-frop"; + +# 8: :index tag with string argument +deleteheader :index "frop" "x-frop"; + +# OK: match type without value patterns +deleteheader :matches "x-frop"; + +# 9: value patterns not a string(list) +deleteheader "x-frop" 1; + +