Loading...
Note: File does not exist in v5.4.
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