diff options
| -rw-r--r-- | tests/include.rc | 37 | 
1 files changed, 36 insertions, 1 deletions
diff --git a/tests/include.rc b/tests/include.rc index 585a4e2c885..cfa9390aaef 100644 --- a/tests/include.rc +++ b/tests/include.rc @@ -13,7 +13,7 @@ mkdir -p $B0;  mkdir -p $M0 $M1;  mkdir -p $N0 $N1; -testcnt=`egrep '^[ \t]*(EXPECT|TEST)' $0 | wc -l`; +testcnt=`egrep '^[ \t]*(EXPECT|TEST|EXPECT_WITHIN)' $0 | wc -l`;  echo 1..$testcnt  t=1 @@ -74,6 +74,40 @@ function _TEST()  	test_footer;  } +function _EXPECT_WITHIN() +{ +        TESTLINE=$1 +        shift; + +        local timeout=$1 +        shift; + +        test_header "$@" + +        e=$1; +        shift; + +        local endtime=$(( ${timeout}+`date +%s` )) + +        local success=0 +        while [ `date +%s` -lt $endtime ]; do +                "$@" | tail -1 | egrep -q "^${e}\$" +                if [ $? -eq 0 ]; then +                        success=1; +                        break; +                fi +                sleep 1; +        done + +        if [ $success -eq 1 ]; then +                true; +        else +                false; +        fi + +        test_footer; +} +  function cleanup()  { @@ -90,4 +124,5 @@ function cleanup()  alias EXPECT='_EXPECT $LINENO'  alias TEST='_TEST $LINENO' +alias EXPECT_WITHIN='_EXPECT_WITHIN $LINENO'  shopt -s expand_aliases  | 
