aboutsummaryrefslogtreecommitdiff
path: root/testcases/lib
diff options
context:
space:
mode:
authorPetr Vorel <pvorel@suse.cz>2018-05-16 13:41:54 +0200
committerPetr Vorel <pvorel@suse.cz>2018-06-06 00:03:28 +0200
commit4bcc0addf08dc2c9f1f4c9af4a430e1d70894afb (patch)
tree9c7ab5198a6d023f33bf5de94369ca80f61578c2 /testcases/lib
parentf83280d03a874d6549c90f75c875b82ca19e59c0 (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.sh59
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"