forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.1 KiB
93 lines
2.1 KiB
#!/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 |
|
available="" |
|
else |
|
available="$(cat "$TESTS")" |
|
fi |
|
|
|
. ./kselftest/runner.sh |
|
ROOT=$PWD |
|
|
|
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 ;; |
|
-d | --dry-run) |
|
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')" |
|
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) |
|
($dryrun cd "$collection" && $dryrun run_many $tests) |
|
done
|
|
|