Commit e005ff01 authored by Cristian Marussi's avatar Cristian Marussi Committed by Shuah Khan

selftests/kselftest/runner.sh: Pass optional command parameters in environment

Some testcases allow for optional commandline parameters but as of now
there is now way to provide such arguments to the runner script.

Add support to retrieve such optional command parameters fron environment
variables named so as to include the all-uppercase test executable name,
sanitized substituting any non-acceptable varname characters with "_",
following the pattern:

	KSELFTEST_<UPPERCASE_SANITIZED_TEST_NAME>_ARGS="options"

Optional command parameters support is not available if 'tr' is not
installed on the test system.

Cc: Kees Cook <keescook@chromium.org>
Signed-off-by: default avatarCristian Marussi <cristian.marussi@arm.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent cfb92440
...@@ -18,6 +18,8 @@ if [ -z "$BASE_DIR" ]; then ...@@ -18,6 +18,8 @@ if [ -z "$BASE_DIR" ]; then
exit 1 exit 1
fi fi
TR_CMD=$(command -v tr)
# If Perl is unavailable, we must fall back to line-at-a-time prefixing # If Perl is unavailable, we must fall back to line-at-a-time prefixing
# with sed instead of unbuffered output. # with sed instead of unbuffered output.
tap_prefix() tap_prefix()
...@@ -49,6 +51,31 @@ run_one() ...@@ -49,6 +51,31 @@ run_one()
# Reset any "settings"-file variables. # Reset any "settings"-file variables.
export kselftest_timeout="$kselftest_default_timeout" export kselftest_timeout="$kselftest_default_timeout"
# Safe default if tr not available
kselftest_cmd_args_ref="KSELFTEST_ARGS"
# Optional arguments for this command, possibly defined as an
# environment variable built using the test executable in all
# uppercase and sanitized substituting non acceptable shell
# variable name characters with "_" as in:
#
# KSELFTEST_<UPPERCASE_SANITIZED_TESTNAME>_ARGS="<options>"
#
# e.g.
#
# rtctest --> KSELFTEST_RTCTEST_ARGS="/dev/rtc1"
#
# cpu-on-off-test.sh --> KSELFTEST_CPU_ON_OFF_TEST_SH_ARGS="-a -p 10"
#
if [ -n "$TR_CMD" ]; then
BASENAME_SANITIZED=$(echo "$BASENAME_TEST" | \
$TR_CMD -d "[:blank:][:cntrl:]" | \
$TR_CMD -c "[:alnum:]_" "_" | \
$TR_CMD [:lower:] [:upper:])
kselftest_cmd_args_ref="KSELFTEST_${BASENAME_SANITIZED}_ARGS"
fi
# Load per-test-directory kselftest "settings" file. # Load per-test-directory kselftest "settings" file.
settings="$BASE_DIR/$DIR/settings" settings="$BASE_DIR/$DIR/settings"
if [ -r "$settings" ] ; then if [ -r "$settings" ] ; then
...@@ -69,7 +96,8 @@ run_one() ...@@ -69,7 +96,8 @@ run_one()
echo "# Warning: file $TEST is missing!" echo "# Warning: file $TEST is missing!"
echo "not ok $test_num $TEST_HDR_MSG" echo "not ok $test_num $TEST_HDR_MSG"
else else
cmd="./$BASENAME_TEST" eval kselftest_cmd_args="\$${kselftest_cmd_args_ref:-}"
cmd="./$BASENAME_TEST $kselftest_cmd_args"
if [ ! -x "$TEST" ]; then if [ ! -x "$TEST" ]; then
echo "# Warning: file $TEST is not executable" echo "# Warning: file $TEST is not executable"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment