source config.mak function for_each_unittest() { local unittests="$1" local cmd="$2" local testname local smp local kernel local opts local groups local arch local machine local check local accel local timeout local rematch 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" "$opts" "$arch" "$machine" "$check" "$accel" "$timeout" fi testname=$rematch smp=1 kernel="" opts="" groups="" arch="" machine="" check="" accel="" timeout="" elif [[ $line =~ ^file\ *=\ *(.*)$ ]]; then kernel=$TEST_DIR/${BASH_REMATCH[1]} elif [[ $line =~ ^smp\ *=\ *(.*)$ ]]; then smp=${BASH_REMATCH[1]} elif [[ $line =~ ^extra_params\ *=\ *'"""'(.*)$ ]]; then opts=${BASH_REMATCH[1]}$'\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 =~ ^extra_params\ *=\ *(.*)$ ]]; then opts=${BASH_REMATCH[1]} 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 =~ ^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" "$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