From: Petr Vorel <pvorel@suse.cz>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v2 1/1] tst_test.sh: Add test cmd helper tst_test_cmds()
Date: Mon, 23 Apr 2018 11:17:06 +0200 [thread overview]
Message-ID: <20180423091706.24154-1-pvorel@suse.cz> (raw)
+ 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
next reply other threads:[~2018-04-23 9:17 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-23 9:17 Petr Vorel [this message]
2018-06-01 9:42 ` [LTP] [PATCH v2 1/1] tst_test.sh: Add test cmd helper tst_test_cmds() Petr Vorel
2018-07-24 9:35 ` Cyril Hrubis
2018-07-24 12:57 ` Petr Vorel
2018-07-24 13:15 ` Cyril Hrubis
2018-07-24 15:19 ` Petr Vorel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180423091706.24154-1-pvorel@suse.cz \
--to=pvorel@suse.cz \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.