From 004475fde7a1788324ce56b1151581c9f15ef2c8 Mon Sep 17 00:00:00 2001 From: Christian Thaeter Date: Sat, 19 Dec 2009 21:19:18 +0100 Subject: [PATCH] support if: else: endif: conditional tests --- tests/test.sh | 58 +++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/tests/test.sh b/tests/test.sh index 52744b8..6f6c863 100755 --- a/tests/test.sh +++ b/tests/test.sh @@ -242,33 +242,57 @@ function TEST() valgrind= fi + local condstack="1" while read -r line; do - cmd="${line%%:*}" - arg="${line#*:}" - arg="${arg:1}" + local cmd="${line%%:*}" + local arg="${line#*: }" + if [[ ! "$arg" ]]; then arg='^$' fi case $cmd in - 'in') - echo "$arg" >>,send_stdin - ;; - 'out') - echo "$arg" >>,expect_stdout - ;; - 'err') - echo "$arg" >>,expect_stderr + 'if') + if $arg; then + condstack="1$condstack" + else + condstack="0$condstack" + fi ;; - 'return') - expect_return="$arg" + 'else') + if [[ "${condstack:0:1}" = "1" ]]; then + condstack="0$condstack" + else + condstack="1$condstack" + fi ;; - '#'*|'') - : + 'endif') + condstack="${condstack:1}" ;; *) - echo "UNKOWN TEST COMMAND '$cmd'" 1>&2 - exit + if [[ "${condstack:0:1}" = "1" ]]; then + case $cmd in + 'in') + echo "$arg" >>,send_stdin + ;; + 'out') + echo "$arg" >>,expect_stdout + ;; + 'err') + echo "$arg" >>,expect_stderr + ;; + 'return') + expect_return="$arg" + ;; + '#'*|'') + : + ;; + *) + echo "UNKOWN TEST COMMAND '$cmd'" 1>&2 + exit + ;; + esac + fi ;; esac done -- 2.11.4.GIT