safing-portbase/test

78 lines
1.5 KiB
Bash
Executable file

#!/bin/bash
warnings=0
errors=0
scripted=0
goUp="\\e[1A"
function run {
if [[ $scripted -eq 0 ]]; then
echo "[......] $*"
fi
# create tmpfile
tmpfile=$(mktemp)
# execute
$* >$tmpfile 2>&1
rc=$?
output=$(cat $tmpfile)
# check return code
if [[ $rc -eq 0 ]]; then
if [[ $output == *"[no test files]"* ]]; then
echo -e "${goUp}[\e[01;33mNOTEST\e[00m] $*"
warnings=$((warnings+1))
else
echo -ne "${goUp}[\e[01;32m OK \e[00m] "
if [[ $2 == "test" ]]; then
echo -n $*
echo -n ": "
echo $output | cut -f "3-" -d " "
else
echo $*
fi
fi
else
if [[ $output == *"build constraints exclude all Go files"* ]]; then
echo -e "${goUp}[ !=OS ] $*"
else
echo -e "${goUp}[\e[01;31m FAIL \e[00m] $*" >/dev/stderr
cat $tmpfile >/dev/stderr
errors=$((errors+1))
fi
fi
rm -f $tmpfile
}
# get and switch to script dir
baseDir="$( cd "$(dirname "$0")" && pwd )"
cd "$baseDir"
# change output format if being run in script
if [[ $1 == "--scripted" ]]; then
scripted=1
goUp=""
fi
# platform info
platformInfo=$(go env GOOS GOARCH)
echo "running tests for ${platformInfo//$'\n'/ }:"
# get all packages
packages=$(go list ./...)
# run vet/test on packages
for package in $packages; do
run go vet $package
run go test -cover $package
done
echo ""
if [[ $errors -gt 0 ]]; then
echo "failed with $errors errors and $warnings warnings"
exit 1
else
echo "succeeded with $warnings warnings"
exit 0
fi