test: Update travis build to include a basic klippy host test

Move the travis installation steps from the travis-build.sh script to
a new script (scripts/travis-install.sh).  Move the travis-build.sh
script to the scripts/ directory as well.

The data dictionaries built in the compile tests are useful during
host software testing, so run all the compile tests sequentially in a
single VM and save the data dictionaries after each build.  Also,
build all the config files found in the test/configs/ directory.

Create the python virtualenv environment during the install phase and
invoke the klippy.py host software in the build phase to perform a
basic host software sanity check.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor
2018-02-26 14:20:11 -05:00
parent 5d635c5252
commit 28d70eaf0c
5 changed files with 76 additions and 47 deletions

40
scripts/travis-build.sh Executable file
View File

@@ -0,0 +1,40 @@
#!/bin/bash
# Test script for travis-ci.org continuous integration.
# Stop script early on any error; check variables; be verbose
set -eux
# Paths to tools installed by travis-install.sh
export PATH=${PWD}/gcc-arm-none-eabi-7-2017-q4-major/bin:${PATH}
PYTHON=${PWD}/python-env/bin/python
######################################################################
# Run compile tests for several different MCU types
######################################################################
DICTDIR=${PWD}/dict
mkdir -p ${DICTDIR}
for TARGET in test/configs/*.config ; do
echo "=============== Test compile $TARGET"
make clean
make distclean
unset CC
cp ${TARGET} .config
make olddefconfig
make V=1
cp out/klipper.dict ${DICTDIR}/$(basename ${TARGET} .config).dict
done
######################################################################
# Verify klippy host software
######################################################################
HOSTDIR=${PWD}/hosttest
mkdir -p ${HOSTDIR}
echo "=============== Test invoke klippy"
$PYTHON klippy/klippy.py config/example.cfg -i /dev/null -o ${HOSTDIR}/output -v -d ${DICTDIR}/atmega2560-16mhz.dict
$PYTHON klippy/parsedump.py ${DICTDIR}/atmega2560-16mhz.dict ${HOSTDIR}/output > ${HOSTDIR}/output-parsed

33
scripts/travis-install.sh Executable file
View File

@@ -0,0 +1,33 @@
#!/bin/bash
# Build setup script for travis-ci.org continuous integration testing.
# See travis-build.sh for the actual test steps.
# Stop script early on any error; check variables; be verbose
set -eux
######################################################################
# Install embedded arm gcc
######################################################################
echo "=============== Install embedded arm gcc"
GCC_ARM_URL="https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2017q4/gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2"
GCC_ARM_SHA="96a029e2ae130a1210eaa69e309ea40463028eab18ba19c1086e4c2dafe69a6a gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2"
GCC_ARM_FILE="$(basename ${GCC_ARM_URL})"
wget "$GCC_ARM_URL"
FOUND_SHA=`sha256sum "$GCC_ARM_FILE"`
if [ "$FOUND_SHA" != "$GCC_ARM_SHA" ]; then
echo "ERROR: Mismatch on gcc arm sha256"
exit -1
fi
tar xf "$GCC_ARM_FILE"
######################################################################
# Create python virtualenv environment
######################################################################
echo "=============== Install python virtualenv"
virtualenv python-env
./python-env/bin/pip install cffi==1.6.0 pyserial==3.2.1 greenlet==0.4.10