]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
REGTESTS: add more complex check conditions to check_conditions.vtc
authorWilly Tarreau <w@1wt.eu>
Sat, 17 Jul 2021 08:43:33 +0000 (10:43 +0200)
committerWilly Tarreau <w@1wt.eu>
Sat, 17 Jul 2021 09:01:47 +0000 (11:01 +0200)
Now that we support logic expressions, variables and parenthesis, let's
add a few more tests to check_conditions.vtc. The tests are conditionned
by the version being at least 2.5-dev2 so that it will not cause failures
during a possible later bisect session or if backported.

The test verifies that exported variables are seen, that operators precedence
works as expected, that parenthesis work at least through two levels, that an
empty condition is false while a negative number is true, and that extraneous
chars in an expression, or unfinished strings are properly caught.

reg-tests/startup/check_condition.vtc

index 96e97728f96bb2a194121342e2da67d4c24ad7c5..3ab6ae4e5b1c396d4ad6935fd838824643e62547 100644 (file)
@@ -10,4 +10,23 @@ shell {
     $HAPROXY_PROGRAM -cc "streq(foo,'foo')"
     $HAPROXY_PROGRAM -cc "streq(\"foo bar\",'foo bar')"
     ! $HAPROXY_PROGRAM -cc "streq(foo,bar)"
+
+    if $HAPROXY_PROGRAM -cc "version_atleast(2.5-dev2)"; then
+        export TESTVAR=1
+        $HAPROXY_PROGRAM   -cc 'defined(TESTVAR) && streq("$TESTVAR","1")'
+        $HAPROXY_PROGRAM   -cc 'feature(OPENSSL) || !feature(OPENSSL)'
+        $HAPROXY_PROGRAM   -cc '1&&!0&&!((streq(a,b)||!streq(a,a)&&1)||strneq(a,a))'
+        $HAPROXY_PROGRAM   -cc '1   &&!   0&&    !((streq(a,b)||!streq(a,a)&&1)||strneq(a,a))'
+        $HAPROXY_PROGRAM   -cc '1 && !0 && !((streq(a,b) || !streq(a,a) && 1) || strneq(a,a))'
+        ! $HAPROXY_PROGRAM -cc '1 && !0 && !((streq(a,b) || !streq(a,a) && 1) || strneq(a,b))'
+        ! $HAPROXY_PROGRAM -cc '1 && !0 && !((streq(a,a) || !streq(a,a) && 1) || strneq(a,a))'
+        # empty string is always false
+        ! $HAPROXY_PROGRAM -cc ''
+        # non-zero is true
+        $HAPROXY_PROGRAM   -cc '-1000 && 200'
+        # check for various parsing errors (extra/missing chars)
+        ! $HAPROXY_PROGRAM   -cc '200rrr'
+        ! $HAPROXY_PROGRAM   -cc '!(0))'
+        ! $HAPROXY_PROGRAM   -cc 'streq(a,"a)'
+    fi
 } -run