Skip to content
Snippets Groups Projects
Commit d4c210f2 authored by Scott Lahteine's avatar Scott Lahteine
Browse files

Fix and improve mftest

parent 44c8f29e
No related branches found
No related tags found
No related merge requests found
......@@ -14,8 +14,10 @@ TESTPATH=buildroot/share/tests
shopt -s extglob nocasematch
# Get test, allowing shorthand
TESTENV=${1:-"mega"}
# Get test
TESTENV=${1:-'-'}
# Allow shorthand for test name
case $TESTENV in
due) TESTENV='DUE' ;;
esp) TESTENV='esp32' ;;
......@@ -26,6 +28,7 @@ case $TESTENV in
stm) TESTENV='STM32F1' ;;
t35) TESTENV='teensy35' ;;
teensy) TESTENV='teensy35' ;;
-) ;;
esac
# Matching patterns
......@@ -34,7 +37,7 @@ ISCMD='^(restore|opt|exec|use|pins|env)_'
ISEXEC='^exec_'
# List available tests and ask for selection
if [[ $1 == '-' ]]; then
if [[ $TESTENV == '-' ]]; then
IND=0
NAMES=()
for FILE in $( ls -1 $TESTPATH/*-tests )
......@@ -43,6 +46,7 @@ if [[ $1 == '-' ]]; then
TNAME=${FILE/-tests/}
TNAME=${TNAME/$TESTPATH\//}
NAMES+=($TNAME)
(( IND < 10 )) && echo -n " "
echo " $IND) $TNAME"
done
......@@ -50,8 +54,8 @@ if [[ $1 == '-' ]]; then
for (( ; ; ))
do
read -p "Select a test to apply (1-$IND) : " NAMEIND
[[ -z "$NAMEIND" ]] && { echo "Quitting." ; exit 1 ; }
[[ $NAMEIND =~ $ISNUM ]] && ((NAMEIND >= 1 && NAMEIND <= IND)) && { TESTENV=${NAMES[$NAMEIND-1]} ; break ; }
[[ -z "$NAMEIND" ]] && { echo '(canceled)' ; exit 1 ; }
[[ $NAMEIND =~ $ISNUM ]] && ((NAMEIND >= 1 && NAMEIND <= IND)) && { TESTENV=${NAMES[$NAMEIND-1]} ; echo ; break ; }
echo "Invalid selection."
done
fi
......@@ -66,17 +70,33 @@ TESTCOUNT=$( awk "/$ISEXEC/{a++}END{print a}" <<<"$OUT" )
# Get the entered or interactive test index
CHOICE=${2:-0}
if [[ $TESTCOUNT > 1 && ( $CHOICE == 0 || $1 == '-' ) ]]; then
# User entered a number?
(( CHOICE && CHOICE > TESTCOUNT )) && { echo "Invalid test index '$CHOICE' (1-$TESTCOUNT)." ; exit 1 ; }
if [[ $CHOICE == 0 ]]; then
# List test descriptions with numbers
echo "Available '$TESTENV' tests:" ; echo "$OUT" | {
IND=0
SED=$(which gsed || which sed)
while IFS= read -r LINE
do
if [[ $LINE =~ $ISEXEC ]]; then
DESC=$( "$SED" -E 's/^.+"(.*)".*$/\1/g' <<<"$LINE" )
(( ++IND < 10 )) && echo -n " "
echo " $IND) $DESC"
fi
done
}
CHOICE=1
if [[ $TESTCOUNT > 1 ]]; then
for (( ; ; ))
do
read -p "Test '$TESTENV' index (1-$TESTCOUNT) : " CHOICE
[[ -z "$CHOICE" ]] && CHOICE=1
read -p "Select a '$TESTENV' test (1-$TESTCOUNT) : " CHOICE
[[ -z "$CHOICE" ]] && { echo '(canceled)' ; exit 1 ; }
[[ $CHOICE =~ $ISNUM ]] && ((CHOICE >= 1 && CHOICE <= TESTCOUNT)) && break
echo "Invalid test index '$CHOICE'."
echo ">>> Invalid test index '$CHOICE'."
done
else
# Confirm a manually-entered test index
((CHOICE >= 1 && CHOICE <= TESTCOUNT)) || { echo "Invalid test index '$CHOICE' (1-$TESTCOUNT)." ; exit 1 ; }
fi
fi
# Finally, run the specified test lines
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment