2020-09-28 23:26:48 +03:00
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
#
# Run installed kselftest tests.
#
BASE_DIR = $( realpath $( dirname $0 ) )
cd $BASE_DIR
TESTS = " $BASE_DIR " /kselftest-list.txt
if [ ! -r " $TESTS " ] ; then
echo " $0 : Could not find list of tests to run ( $TESTS ) " >& 2
2020-09-28 23:26:49 +03:00
available = ""
else
available = " $( cat " $TESTS " ) "
2020-09-28 23:26:48 +03:00
fi
. ./kselftest/runner.sh
ROOT = $PWD
2020-09-28 23:26:49 +03:00
usage( )
{
cat <<EOF
Usage: $0 [ OPTIONS]
-s | --summary Print summary with detailed log in output.log
-t | --test COLLECTION:TEST Run TEST from COLLECTION
-c | --collection COLLECTION Run all tests from COLLECTION
-l | --list List the available collection:test entries
-d | --dry-run Don' t actually run any tests
-h | --help Show this usage info
EOF
exit $1
}
COLLECTIONS = ""
TESTS = ""
dryrun = ""
while true; do
case " $1 " in
-s | --summary)
logfile = " $BASE_DIR " /output.log
cat /dev/null > $logfile
shift ; ;
-t | --test)
TESTS = " $TESTS $2 "
shift 2 ; ;
-c | --collection)
COLLECTIONS = " $COLLECTIONS $2 "
shift 2 ; ;
-l | --list)
echo " $available "
exit 0 ; ;
2020-10-28 11:31:14 +03:00
-d | --dry-run)
2020-09-28 23:26:49 +03:00
dryrun = "echo"
shift ; ;
-h | --help)
usage 0 ; ;
"" )
break ; ;
*)
usage 1 ; ;
esac
done
# Add all selected collections to the explicit test list.
if [ -n " $COLLECTIONS " ] ; then
for collection in $COLLECTIONS ; do
found = " $( echo " $available " | grep " ^ $collection : " ) "
if [ -z " $found " ] ; then
echo " No such collection ' $collection ' " >& 2
exit 1
fi
TESTS = " $TESTS $found "
done
fi
# Replace available test list with explicitly selected tests.
if [ -n " $TESTS " ] ; then
valid = ""
for test in $TESTS ; do
found = " $( echo " $available " | grep " ^ ${ test } $" ) "
if [ -z " $found " ] ; then
echo " No such test ' $test ' " >& 2
exit 1
fi
valid = " $valid $found "
done
available = " $( echo " $valid " | sed -e 's/ /\n/g' ) "
2020-09-28 23:26:48 +03:00
fi
collections = $( echo " $available " | cut -d: -f1 | uniq)
for collection in $collections ; do
[ -w /dev/kmsg ] && echo " kselftest: Running tests in $collection " >> /dev/kmsg
tests = $( echo " $available " | grep " ^ $collection : " | cut -d: -f2)
2020-09-28 23:26:49 +03:00
( $dryrun cd " $collection " && $dryrun run_many $tests )
2020-09-28 23:26:48 +03:00
done