diff options
author | Petr Vorel <pvorel@suse.cz> | 2018-05-16 13:41:54 +0200 |
---|---|---|
committer | Petr Vorel <pvorel@suse.cz> | 2018-06-06 00:03:28 +0200 |
commit | 4bcc0addf08dc2c9f1f4c9af4a430e1d70894afb (patch) | |
tree | 9c7ab5198a6d023f33bf5de94369ca80f61578c2 /testcases/lib | |
parent | f83280d03a874d6549c90f75c875b82ca19e59c0 (diff) |
tst_test.sh: Add TST_TEST_DATA and TST_TEST_DATA_IFS
This is specific only for shell.
Each run of tst_run gets passed sequence number of a test being run
as '$1' and corresponding part of data from TST_TEST_DATA as '$2'.
Also create internal functions _tst_run_tests() and _tst_run_test()
to reduce duplicity.
Introduced dependencies: cut tr wc.
Signed-off-by: Petr Vorel <pvorel@suse.cz>
Acked-by: Cyril Hrubis <chrubis@suse.cz>
Acked-by: Alexey Kodanev <alexey.kodanev@oracle.com>
Diffstat (limited to 'testcases/lib')
-rw-r--r-- | testcases/lib/tst_test.sh | 59 |
1 files changed, 38 insertions, 21 deletions
diff --git a/testcases/lib/tst_test.sh b/testcases/lib/tst_test.sh index 33a6b0f9e..881b40afb 100644 --- a/testcases/lib/tst_test.sh +++ b/testcases/lib/tst_test.sh @@ -247,6 +247,8 @@ _tst_rescmp() tst_run() { local _tst_i + local _tst_data + local _tst_max local _tst_name if [ -n "$TST_TEST_PATH" ]; then @@ -256,7 +258,7 @@ tst_run() OPTS|USAGE|PARSE_ARGS|POS_ARGS);; NEEDS_ROOT|NEEDS_TMPDIR|NEEDS_DEVICE|DEVICE);; NEEDS_CMDS|NEEDS_MODULE|MODPATH|DATAROOT);; - IPV6);; + IPV6|TEST_DATA|TEST_DATA_IFS);; *) tst_res TWARN "Reserved variable TST_$_tst_i used!";; esac done @@ -351,27 +353,15 @@ tst_run() #TODO check that test reports some results for each test function call while [ $TST_ITERATIONS -gt 0 ]; do - if [ -n "$TST_CNT" ]; then - if type ${TST_TESTFUNC}1 > /dev/null 2>&1; then - for _tst_i in $(seq $TST_CNT); do - local _tst_res=$(_tst_resstr) - $TST_TESTFUNC$_tst_i - _tst_rescmp "$_tst_res" - TST_COUNT=$((TST_COUNT+1)) - done - else - for _tst_i in $(seq $TST_CNT); do - local _tst_res=$(_tst_resstr) - $TST_TESTFUNC $_tst_i - _tst_rescmp "$_tst_res" - TST_COUNT=$((TST_COUNT+1)) - done - fi + if [ -n "$TST_TEST_DATA" ]; then + tst_check_cmds cut tr wc + _tst_max=$(( $(echo $TST_TEST_DATA | tr -cd "$TST_TEST_DATA_IFS" | wc -c) +1)) + for _tst_i in $(seq $_tst_max); do + _tst_data="$(echo "$TST_TEST_DATA" | cut -d"$TST_TEST_DATA_IFS" -f$_tst_i)" + _tst_run_tests "$_tst_data" + done else - local _tst_res=$(_tst_resstr) - $TST_TESTFUNC - _tst_rescmp "$_tst_res" - TST_COUNT=$((TST_COUNT+1)) + _tst_run_tests fi TST_ITERATIONS=$((TST_ITERATIONS-1)) done @@ -379,6 +369,31 @@ tst_run() _tst_do_exit } +_tst_run_tests() +{ + local _tst_data="$1" + local _tst_i + + for _tst_i in $(seq ${TST_CNT:-1}); do + if type ${TST_TESTFUNC}1 > /dev/null 2>&1; then + _tst_run_test "$TST_TESTFUNC$_tst_i" $_tst_i "$_tst_data" + else + _tst_run_test "$TST_TESTFUNC" $_tst_i "$_tst_data" + fi + done +} + +_tst_run_test() +{ + local _tst_res=$(_tst_resstr) + local _tst_fnc="$1" + shift + + $_tst_fnc "$@" + _tst_rescmp "$_tst_res" + TST_COUNT=$((TST_COUNT+1)) +} + if [ -z "$TST_ID" ]; then _tst_filename=$(basename $0) || \ tst_brk TCONF "Failed to set TST_ID from \$0 ('$0'), fix it with setting TST_ID before sourcing tst_test.sh" @@ -404,6 +419,8 @@ if [ -z "$TST_NO_DEFAULT_RUN" ]; then tst_brk TBROK "TST_TESTFUNC is not defined" fi + TST_TEST_DATA_IFS="${TST_TEST_DATA_IFS:- }" + if [ -n "$TST_CNT" ]; then if ! tst_is_int "$TST_CNT"; then tst_brk TBROK "TST_CNT must be integer" |