1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# 4# Run installed kselftest tests. 5# 6BASE_DIR=$(realpath $(dirname $0)) 7cd $BASE_DIR 8TESTS="$BASE_DIR"/kselftest-list.txt 9if [ ! -r "$TESTS" ] ; then 10 echo "$0: Could not find list of tests to run ($TESTS)" >&2 11 available="" 12else 13 available="$(cat "$TESTS")" 14fi 15 16. ./kselftest/runner.sh 17ROOT=$PWD 18 19usage() 20{ 21 cat <<EOF 22Usage: $0 [OPTIONS] 23 -s | --summary Print summary with detailed log in output.log 24 -t | --test COLLECTION:TEST Run TEST from COLLECTION 25 -c | --collection COLLECTION Run all tests from COLLECTION 26 -l | --list List the available collection:test entries 27 -d | --dry-run Don't actually run any tests 28 -h | --help Show this usage info 29EOF 30 exit $1 31} 32 33COLLECTIONS="" 34TESTS="" 35dryrun="" 36while true; do 37 case "$1" in 38 -s | --summary) 39 logfile="$BASE_DIR"/output.log 40 cat /dev/null > $logfile 41 shift ;; 42 -t | --test) 43 TESTS="$TESTS $2" 44 shift 2 ;; 45 -c | --collection) 46 COLLECTIONS="$COLLECTIONS $2" 47 shift 2 ;; 48 -l | --list) 49 echo "$available" 50 exit 0 ;; 51 -d | --dry-run) 52 dryrun="echo" 53 shift ;; 54 -h | --help) 55 usage 0 ;; 56 "") 57 break ;; 58 *) 59 usage 1 ;; 60 esac 61done 62 63# Add all selected collections to the explicit test list. 64if [ -n "$COLLECTIONS" ]; then 65 for collection in $COLLECTIONS ; do 66 found="$(echo "$available" | grep "^$collection:")" 67 if [ -z "$found" ] ; then 68 echo "No such collection '$collection'" >&2 69 exit 1 70 fi 71 TESTS="$TESTS $found" 72 done 73fi 74# Replace available test list with explicitly selected tests. 75if [ -n "$TESTS" ]; then 76 valid="" 77 for test in $TESTS ; do 78 found="$(echo "$available" | grep "^${test}$")" 79 if [ -z "$found" ] ; then 80 echo "No such test '$test'" >&2 81 exit 1 82 fi 83 valid="$valid $found" 84 done 85 available="$(echo "$valid" | sed -e 's/ /\n/g')" 86fi 87 88collections=$(echo "$available" | cut -d: -f1 | uniq) 89for collection in $collections ; do 90 [ -w /dev/kmsg ] && echo "kselftest: Running tests in $collection" >> /dev/kmsg 91 tests=$(echo "$available" | grep "^$collection:" | cut -d: -f2) 92 ($dryrun cd "$collection" && $dryrun run_many $tests) 93done 94