TESTS: add regression tests for ACL and sample expression parsers
These ones trigger each of the error messages in the code about
argument and converters syntax.
diff --git a/tests/test-acl-args.cfg b/tests/test-acl-args.cfg
new file mode 100644
index 0000000..5946f0e
--- /dev/null
+++ b/tests/test-acl-args.cfg
@@ -0,0 +1,36 @@
+# This config file aims to trigger all error detection cases in the ACL
+# expression parser related to the fetch arguments.
+
+# silence some warnings
+defaults
+ mode http
+ timeout client 1s
+ timeout server 1s
+ timeout connect 1s
+
+frontend 1
+ bind :10000
+
+ # missing fetch method in ACL expression '(arg)'.
+ block if { (arg) }
+
+ # unknown fetch method 'blah' in ACL expression 'blah(arg)'.
+ block if { blah(arg) }
+
+ # missing closing ')' after arguments to fetch keyword 'req.hdr' in ACL expression 'req.hdr('.
+ block if { req.hdr( }
+
+ # cannot be triggerred : "returns type of fetch method '%s' is unknown"
+
+ # fetch method 'always_true' : no argument supported, but got 'arg' in ACL expression 'always_true(arg)'.
+ block if { always_true(arg) }
+
+ # fetch method 'req.hdr' : failed to parse 'a' as type 'signed integer' at position 2 in ACL expression 'req.hdr(a,a)'.
+ block if { req.hdr(a,a) }
+
+ # in argument to 'payload_lv', payload length must be > 0.
+ block if { payload_lv(0,0) }
+
+ # ACL keyword 'payload_lv' : expected type 'unsigned integer' at position 1, but got nothing.
+ block if { payload_lv }
+
diff --git a/tests/test-sample-fetch-args.cfg b/tests/test-sample-fetch-args.cfg
new file mode 100644
index 0000000..cddf4fe
--- /dev/null
+++ b/tests/test-sample-fetch-args.cfg
@@ -0,0 +1,36 @@
+# This config file aims to trigger all error detection cases in the sample
+# fetch expression parser related to the fetch arguments.
+
+# silence some warnings
+defaults
+ mode http
+ timeout client 1s
+ timeout server 1s
+ timeout connect 1s
+
+frontend 1
+ bind :10000
+
+ # missing fetch method
+ http-request add-header name %[(arg)]
+
+ # unknown fetch method 'blah'
+ http-request add-header name %[blah(arg)]
+
+ # missing closing ')' after arguments to fetch keyword 'req.hdr'
+ http-request add-header name %[req.hdr(]
+
+ # cannot be triggerred : "returns type of fetch method '%s' is unknown"
+
+ # fetch method 'always_true' : no argument supported, but got 'arg'
+ http-request add-header name %[always_true(arg)]
+
+ # fetch method 'req.hdr' : failed to parse 'a' as 'signed integer' at position 2
+ http-request add-header name %[req.hdr(a,a)]
+
+ # invalid args in fetch method 'payload_lv' : payload length must be > 0
+ http-request add-header name %[payload_lv(0,0)]
+
+ # fetch method 'payload_lv' : expected type 'unsigned integer' at position 1, but got nothing
+ http-request add-header name %[payload_lv]
+
diff --git a/tests/test-sample-fetch-conv.cfg b/tests/test-sample-fetch-conv.cfg
new file mode 100644
index 0000000..50eda5d
--- /dev/null
+++ b/tests/test-sample-fetch-conv.cfg
@@ -0,0 +1,42 @@
+# This config file aims to trigger all error detection cases in the sample
+# fetch expression parser related to the sample converters.
+
+# silence some warnings
+defaults
+ mode http
+ timeout client 1s
+ timeout server 1s
+ timeout connect 1s
+
+frontend 1
+ bind :10000
+
+ # report "missing comma after fetch keyword %s"
+ http-request add-header name %[hdr(arg))]
+
+ # report "missing comma after conv keyword %s"
+ http-request add-header name %[hdr(arg),ipmask(2))]
+
+ # report "unknown conv method '%s'"
+ http-request add-header name %[hdr(arg),blah]
+
+ # report "syntax error: missing ')' after conv keyword '%s'"
+ http-request add-header name %[hdr(arg),ipmask(2]
+
+ # no way to report "returns type of conv method '%s' is unknown"
+
+ # "conv method '%s' cannot be applied"
+ http-request add-header name %[wait_end,ipmask(2)]
+
+ # "conv method '%s' does not support any args"
+ http-request add-header name %[hdr(arg),upper()]
+
+ # "invalid arg %d in conv method '%s' : %s"
+ http-request add-header name %[hdr(arg),ipmask(a)]
+
+ # "invalid args in conv method '%s' : %s"
+ http-request add-header name %[hdr(arg),map()]
+
+ # "missing args for conv method '%s'"
+ http-request add-header name %[hdr(arg),ipmask]
+