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;
+
+