[LTP] [PATCH v2 1/1] tst_test.sh: Add test cmd helper tst_test_cmds()
Petr Vorel
pvorel@suse.cz
Mon Apr 23 11:17:06 CEST 2018
+ tst_cmd_available()
tst_test_cmds() is meant to be a check just for a particular test.
Works like tst_check_cmds(), but instead of tst_brk() calls tst_res().
tst_cmd_available() helper can handle cases when command shell builtin
is not available (e.g. Busybox).
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
Hi,
if you don't like using which or testing with 127 exit code in
tst_cmd_available() (or if you don't like tst_cmd_available()), I
can remove it.
Kind regards,
Petr
---
doc/test-writing-guidelines.txt | 17 +++++++++++++++++
testcases/lib/tst_test.sh | 29 +++++++++++++++++++++++++++--
2 files changed, 44 insertions(+), 2 deletions(-)
diff --git a/doc/test-writing-guidelines.txt b/doc/test-writing-guidelines.txt
index cbbfe6c0f..320b42bf8 100644
--- a/doc/test-writing-guidelines.txt
+++ b/doc/test-writing-guidelines.txt
@@ -1519,6 +1519,23 @@ existence each of them and exits the test with 'TCONF' on first misssing.
Alternatively the 'tst_check_cmds()' function can be used to do the same on
runtime, since sometimes we need to the check at runtime too.
+'tst_test_cmds()' can be used for requirements just for a particular test
+as it doesn't exit (it issues 'tst_res TCONF'). Expected usage is:
+...
+
+TST_TESTFUNC=do_test
+. tst_test.sh
+
+do_test()
+{
+ tst_test_cmds cmd || return
+ cmd --foo
+ ...
+}
+
+tst_run
+...
+
Locating kernel modules
+++++++++++++++++++++++
diff --git a/testcases/lib/tst_test.sh b/testcases/lib/tst_test.sh
index 8d49d34b6..b3e803e05 100644
--- a/testcases/lib/tst_test.sh
+++ b/testcases/lib/tst_test.sh
@@ -201,12 +201,37 @@ tst_mkfs()
ROD_SILENT mkfs.$fs_type $fs_opts $device
}
+tst_cmd_available()
+{
+ if type command > /dev/null 2>&1; then
+ command -v $1 > /dev/null 2>&1 || return 1
+ else
+ which $1 > /dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ return 0
+ elif [ $? -eq 127 ]; then
+ tst_brk TCONF "missing which command"
+ else
+ return 1
+ fi
+ fi
+}
+
tst_check_cmds()
{
local cmd
for cmd in $*; do
- if ! command -v $cmd > /dev/null 2>&1; then
- tst_brk TCONF "'$cmd' not found"
+ tst_cmd_available $cmd || tst_brk TCONF "'$cmd' not found"
+ done
+}
+
+tst_test_cmds()
+{
+ local cmd
+ for cmd in $*; do
+ if ! tst_cmd_available $cmd; then
+ tst_res TCONF "'$cmd' not found"
+ return 1
fi
done
}
--
2.16.3
More information about the ltp
mailing list