Skip to content

Commit

Permalink
selftests: sysctl: return Kselftest Skip code for skipped tests
Browse files Browse the repository at this point in the history
When sysctl test is skipped because of unmet dependencies and/or
unsupported configuration, it exits with error which is treated as
a fail by the Kselftest framework. This leads to false negative result
even when the test could not be run.

Change it to return kselftest skip code when a test gets skipped to
clearly report that the test could not be run.

Changed return code to kselftest skip code in skip error legs that check
requirements and module probe test error leg.

Kselftest framework SKIP code is 4 and the framework prints appropriate
messages to indicate that the test is skipped.

Signed-off-by: Shuah Khan (Samsung OSG) <shuah@kernel.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Shuah Khan (Samsung OSG) <shuah@kernel.org>
  • Loading branch information
Shuah Khan (Samsung OSG) committed Jun 18, 2018
1 parent 8781578 commit c7db6ff
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions tools/testing/selftests/sysctl/sysctl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@

# This performs a series tests against the proc sysctl interface.

# Kselftest framework requirement - SKIP code is 4.
ksft_skip=4

TEST_NAME="sysctl"
TEST_DRIVER="test_${TEST_NAME}"
TEST_DIR=$(dirname $0)
Expand Down Expand Up @@ -41,7 +44,7 @@ test_modprobe()
echo "$0: $DIR not present" >&2
echo "You must have the following enabled in your kernel:" >&2
cat $TEST_DIR/config >&2
exit 1
exit $ksft_skip
fi
}

Expand Down Expand Up @@ -98,28 +101,30 @@ test_reqs()
uid=$(id -u)
if [ $uid -ne 0 ]; then
echo $msg must be run as root >&2
exit 0
exit $ksft_skip
fi

if ! which perl 2> /dev/null > /dev/null; then
echo "$0: You need perl installed"
exit 1
exit $ksft_skip
fi
if ! which getconf 2> /dev/null > /dev/null; then
echo "$0: You need getconf installed"
exit 1
exit $ksft_skip
fi
if ! which diff 2> /dev/null > /dev/null; then
echo "$0: You need diff installed"
exit 1
exit $ksft_skip
fi
}

function load_req_mod()
{
trap "test_modprobe" EXIT

if [ ! -d $DIR ]; then
if ! modprobe -q -n $TEST_DRIVER; then
echo "$0: module $TEST_DRIVER not found [SKIP]"
exit $ksft_skip
fi
modprobe $TEST_DRIVER
if [ $? -ne 0 ]; then
exit
Expand Down Expand Up @@ -765,6 +770,7 @@ function parse_args()
test_reqs
allow_user_defaults
check_production_sysctl_writes_strict
test_modprobe
load_req_mod

trap "test_finish" EXIT
Expand Down

0 comments on commit c7db6ff

Please sign in to comment.