nodemcu-firmware/tests/all.sh

80 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env zsh
set -e -u -x
[ -n "${NODEMCU_WIFI:-}" ] || { echo "Specify NODEMCU_WIFI"; exit 1; }
[ -n "${NODEMCU_DUT0:-}" ] || { echo "Specify NODEMCU_DUT0"; exit 1; }
: ${NODEMCU_DUT0_NUM:=int}
: ${NODEMCU_DUT0_CONFIG:=conf/dut0/testenv.conf}
if [ -n "${NODEMCU_DUT1:-}" ]; then
: ${NODEMCU_DUT1_NUM:=int}
: ${NODEMCU_DUT1_CONFIG:=conf/dut1/testenv.conf}
fi
echo "Test configuration:"
echo " DUT0 ${NODEMCU_DUT0} (${NODEMCU_DUT0_NUM} ${NODEMCU_DUT0_CONFIG})"
if [ -n "${NODEMCU_DUT1:-}" ]; then
echo " DUT1 ${NODEMCU_DUT1} (${NODEMCU_DUT1_NUM} ${NODEMCU_DUT1_CONFIG})"
fi
echo "Preflight..."
export TCLLIBPATH=./expectnmcu
[ -z "${NODEMCU_TESTTMP:-}" ] && {
NODEMCU_TESTTMP="$(umask 077; mktemp -d -p /tmp nodemcu.XXXXXXXXXX)"
cleanup() {
rm -rf ${NODEMCU_TESTTMP}
}
trap cleanup EXIT
}
export NODEMCU_TESTTMP
# Bring the board up and do our IP extraction once rather than letting each
# test guess over and over.
if [ -z "${MYIP-}" ]; then
echo "Probing for my IP address; this might take a moment..."
MYIP=$(expect ./preflight-host-ip.expect -serial ${NODEMCU_DUT0} -wifi ${NODEMCU_WIFI})
stty sane
echo "Guessed my IP as ${MYIP}"
fi
./preflight-tls.sh # Make TLS keys
./preflight-lfs.sh # Make LFS images
echo "Staging LFSes and running early commands on each DUT..."
expect ./tap-driver.expect -serial ${NODEMCU_DUT0} -lfs ${NODEMCU_TESTTMP}/tmp-lfs-${NODEMCU_DUT0_NUM}.img ${NODEMCU_DUT0_CONFIG} preflight-dut.lua
if [ -n "${NODEMCU_DUT1:-}" ]; then
expect ./tap-driver.expect -serial ${NODEMCU_DUT1} -lfs ${NODEMCU_TESTTMP}/tmp-lfs-${NODEMCU_DUT1_NUM}.img ${NODEMCU_DUT1_CONFIG} preflight-dut.lua
fi
echo "Running on-DUT tests..."
# These are all in LFS (see preflight-lfs.sh) and so we can -noxfer and just run tests by name
T=(
NTest_adc_env
NTest_file
NTest_gpio_env
NTest_pixbuf
NTest_tmr
NTest_ws2812_effects
NTest_ws2812
)
for t in "${T[@]}"; do
expect ./tap-driver.expect -serial ${NODEMCU_DUT0} -noxfer -runfunc "node.LFS.get('${t}')"
done
echo "Running from-host tests..."
T=(
./test-mqtt.expect
)
for t in "${T[@]}"; do
expect ${t} -serial ${NODEMCU_DUT0} -wifi ${NODEMCU_WIFI} -ip ${MYIP}
done