| source config.mak |
| source scripts/vmm.bash |
| |
| function for_each_unittest() |
| { |
| local unittests="$1" |
| local cmd="$2" |
| local testname |
| local smp |
| local kernel |
| local test_args |
| local opts |
| local groups |
| local arch |
| local machine |
| local check |
| local accel |
| local timeout |
| local disabled_if |
| local rematch |
| |
| # shellcheck disable=SC2155 |
| local params_name=$(vmm_unittest_params_name) |
| |
| exec {fd}<"$unittests" |
| |
| while read -r -u $fd line; do |
| if [[ "$line" =~ ^\[(.*)\]$ ]]; then |
| rematch=${BASH_REMATCH[1]} |
| if [ -n "${testname}" ]; then |
| $(arch_cmd) "$cmd" "$testname" "$groups" "$smp" "$kernel" "$test_args" "$opts" "$arch" "$machine" "$check" "$accel" "$timeout" "$disabled_if" |
| fi |
| testname=$rematch |
| smp="$(vmm_optname_nr_cpus) 1" |
| kernel="" |
| # Intentionally don't use -append if test_args is empty |
| # because qemu interprets the first word after |
| # -append as a kernel parameter instead of a command |
| # line option. |
| test_args="" |
| opts="$(vmm_default_opts)" |
| groups="" |
| arch="" |
| machine="" |
| check="" |
| accel="" |
| timeout="" |
| disabled_if="" |
| elif [[ $line =~ ^file\ *=\ *(.*)$ ]]; then |
| kernel=$TEST_DIR/${BASH_REMATCH[1]} |
| elif [[ $line =~ ^smp\ *=\ *(.*)$ ]]; then |
| smp="$(vmm_optname_nr_cpus) ${BASH_REMATCH[1]}" |
| elif [[ $line =~ ^test_args\ *=\ *(.*)$ ]]; then |
| test_args="$(vmm_optname_args) ${BASH_REMATCH[1]}" |
| elif [[ $line =~ ^($params_name)\ *=\ *'"""'(.*)$ ]]; then |
| opts="$(vmm_default_opts) ${BASH_REMATCH[2]}$'\n'" |
| while read -r -u $fd; do |
| #escape backslash newline, but not double backslash |
| if [[ $opts =~ [^\\]*(\\*)$'\n'$ ]]; then |
| if (( ${#BASH_REMATCH[1]} % 2 == 1 )); then |
| opts=${opts%\\$'\n'} |
| fi |
| fi |
| if [[ "$REPLY" =~ ^(.*)'"""'[:blank:]*$ ]]; then |
| opts+=${BASH_REMATCH[1]} |
| break |
| else |
| opts+=$REPLY$'\n' |
| fi |
| done |
| elif [[ $line =~ ^($params_name)\ *=\ *(.*)$ ]]; then |
| opts="$(vmm_default_opts) ${BASH_REMATCH[2]}" |
| elif [[ $line =~ ^groups\ *=\ *(.*)$ ]]; then |
| groups=${BASH_REMATCH[1]} |
| elif [[ $line =~ ^arch\ *=\ *(.*)$ ]]; then |
| arch=${BASH_REMATCH[1]} |
| elif [[ $line =~ ^machine\ *=\ *(.*)$ ]]; then |
| machine=${BASH_REMATCH[1]} |
| elif [[ $line =~ ^check\ *=\ *(.*)$ ]]; then |
| check=${BASH_REMATCH[1]} |
| elif [[ $line =~ ^disabled_if\ *=\ *(.*)$ ]]; then |
| disabled_if=${BASH_REMATCH[1]} |
| elif [[ $line =~ ^accel\ *=\ *(.*)$ ]]; then |
| accel=${BASH_REMATCH[1]} |
| elif [[ $line =~ ^timeout\ *=\ *(.*)$ ]]; then |
| timeout=${BASH_REMATCH[1]} |
| fi |
| done |
| if [ -n "${testname}" ]; then |
| $(arch_cmd) "$cmd" "$testname" "$groups" "$smp" "$kernel" "$test_args" "$opts" "$arch" "$machine" "$check" "$accel" "$timeout" |
| fi |
| exec {fd}<&- |
| } |
| |
| function arch_cmd() |
| { |
| [ "${ARCH_CMD}" ] && echo "${ARCH_CMD}" |
| } |
| |
| # The current file has to be the only file sourcing the arch helper |
| # file. Shellcheck can't follow this so help it out. There doesn't appear to be a |
| # way to specify multiple alternatives, so we will have to rethink this if things |
| # get more complicated. |
| ARCH_FUNC=scripts/${ARCH}/func.bash |
| if [ -f "${ARCH_FUNC}" ]; then |
| # shellcheck source=scripts/s390x/func.bash |
| source "${ARCH_FUNC}" |
| fi |