1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

Improve execution of static-tests

Allow execution of static tests with the `make static-tests`
command and improve its output for the human reader
This commit is contained in:
Lucas Jenss 2015-11-24 06:02:39 +01:00
parent 523e6975dd
commit f7c28ccecd
4 changed files with 109 additions and 16 deletions

View File

@ -36,3 +36,5 @@ welcome:
@echo " https://github.com/RIOT-OS/RIOT/wiki/Quick-Start-Guide"
@echo "Or ask questions on our mailing list:"
@echo " users@riot-os.org (http://lists.riot-os.org/mailman/listinfo/users)"
-include Makefile.tests

3
Makefile.tests Normal file
View File

@ -0,0 +1,3 @@
static-test:
./dist/tools/static-tests.sh

45
dist/tools/static-tests.sh vendored Executable file
View File

@ -0,0 +1,45 @@
#!/bin/bash
#
# Copyright (C) 2015 Lucas Jenß <lucas@x3ro.de>
#
# This file is subject to the terms and conditions of the GNU Lesser
# General Public License v2.1. See the file LICENSE in the top level
# directory for more details.
#
# Change to RIOT root
cd "$(dirname "$0")/../../"
function dep {
which $1 2>&1 1>/dev/null
if (( $? != 0 )); then
echo "Dependency not met: $1"
exit 1
fi
}
function abort {
echo "$(tput setaf 1)$1$(tput sgr0)"
exit 1
}
function request_confirmation {
read -p "$(tput setaf 4)$1 (y/n) $(tput sgr0)"
[ "$REPLY" == "y" ] || abort "Aborted!"
}
# Make sure all required commands are available
dep cppcheck
dep pcregrep
RIOT_REMOTE_COUNT="$(git remote | grep "^riot$" | wc -l)"
if (( "$RIOT_REMOTE_COUNT" != 1 )); then
echo "The static test setup expect a remote called 'riot', pointing to the"
echo "central repository. This remote currently does not exist."
request_confirmation "Do you wish to create it?"
git remote add riot https://github.com/RIOT-OS/RIOT.git
git fetch riot
fi
BUILDTEST_MCU_GROUP=static-tests ./dist/tools/travis-scripts/build_and_test.sh

View File

@ -9,6 +9,45 @@
CI_BASE_BRANCH=${CI_BASE_BRANCH:-master}
function print_result {
local RED="\033[0;31m"
local GREEN="\033[0;32m"
local NO_COLOUR="\033[0m"
if (( "$1" == 0 )); then
echo -e "${GREEN}$NO_COLOUR"
else
echo -e "${RED}x$NO_COLOUR"
fi
}
RESULT=0
set_result() {
NEW_RESULT=$1
if (( $NEW_RESULT != 0))
then
RESULT=$NEW_RESULT
fi
}
function run {
echo -n "Running '$@' "
OUT=$($@ 2>&1)
NEW_RESULT=$?
print_result $NEW_RESULT
set_result $NEW_RESULT
# Indent command output so that its easily discernable from the rest
OUT_LENGTH="$(echo -n $OUT | wc -c)"
if (( "$OUT_LENGTH" > 0 )); then
echo -e "Command output:\n"
(echo $OUT | while read -r line; do echo -ne "\t"; echo $line; done)
echo ""
fi
}
if [[ $BUILDTEST_MCU_GROUP ]]
then
@ -43,31 +82,30 @@ then
trap "RESULT=1" ERR
git rebase ${CI_BASE_BRANCH} || git rebase --abort
git rebase ${CI_BASE_BRANCH}
if (( $? != 0 )); then
git rebase --abort > /dev/null 2>&1
echo "Rebase failed, aborting..."
exit 1
fi
if [ $RESULT -ne 0 ]; then
exit $RESULT
fi
./dist/tools/whitespacecheck/check.sh ${CI_BASE_BRANCH}
./dist/tools/licenses/check.sh ${CI_BASE_BRANCH} --diff-filter=MR --error-exitcode=0
./dist/tools/licenses/check.sh ${CI_BASE_BRANCH} --diff-filter=AC
./dist/tools/doccheck/check.sh ${CI_BASE_BRANCH}
./dist/tools/externc/check.sh ${CI_BASE_BRANCH}
run ./dist/tools/whitespacecheck/check.sh ${CI_BASE_BRANCH}
run ./dist/tools/licenses/check.sh ${CI_BASE_BRANCH} --diff-filter=MR --error-exitcode=0
run ./dist/tools/licenses/check.sh ${CI_BASE_BRANCH} --diff-filter=AC
run ./dist/tools/doccheck/check.sh ${CI_BASE_BRANCH}
run ./dist/tools/externc/check.sh ${CI_BASE_BRANCH}
# TODO:
# Remove all but `${CI_BASE_BRANCH}` parameters to cppcheck (and remove second
# invocation) once all warnings of cppcheck have been taken care of
# in ${CI_BASE_BRANCH}.
./dist/tools/cppcheck/check.sh ${CI_BASE_BRANCH} --diff-filter=MR --error-exitcode=0
./dist/tools/cppcheck/check.sh ${CI_BASE_BRANCH} --diff-filter=AC
./dist/tools/pr_check/pr_check.sh ${CI_BASE_BRANCH}
run ./dist/tools/cppcheck/check.sh ${CI_BASE_BRANCH} --diff-filter=MR --error-exitcode=0
run ./dist/tools/cppcheck/check.sh ${CI_BASE_BRANCH} --diff-filter=AC
run ./dist/tools/pr_check/pr_check.sh ${CI_BASE_BRANCH}
exit $RESULT
fi
@ -79,11 +117,16 @@ then
if [ "$BUILDTEST_MCU_GROUP" == "x86" ]
then
make -C ./tests/unittests all-debug test BOARD=native TERMPROG='gdb -batch -ex r -ex bt $(ELF)' || exit
set_result $?
# TODO:
# Reenable once https://github.com/RIOT-OS/RIOT/issues/2300 is
# resolved:
# - make -C ./tests/unittests all test BOARD=qemu-i386 || exit
fi
BASE_BRANCH="${TRAVIS_BRANCH:-${CI_BASE_BRANCH}}"
./dist/tools/compile_test/compile_test.py $BASE_BRANCH
set_result $?
fi
exit $RESULT