test: Add in_ci utility test function

in_ci checks for environment variables set by a selection of CI systems
and returns true if the test appears to be running in CI. Additionally
it can test for specific CI systems, and returns true if the CI system
is listed.

Deduplicate existing environment checks for Travis and Jenkins.

Signed-off-by: Joe Groocock <me@frebib.net>
This commit is contained in:
Joe Groocock
2021-02-12 14:40:47 +00:00
parent 6a61774fb7
commit 5af1dcb8b1
8 changed files with 36 additions and 21 deletions

View File

@@ -4,10 +4,7 @@ XPWD=`pwd`
ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd .. && pwd )" # dir! ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && cd .. && pwd )" # dir!
cd "${ROOT}" >/dev/null cd "${ROOT}" >/dev/null
travis=0 . ${ROOT}/test/util.sh
if env | grep -q '^TRAVIS=true$'; then
travis=1
fi
sudo_command=$(command -v sudo) sudo_command=$(command -v sudo)
@@ -81,7 +78,7 @@ if [ ! -z "$PACMAN" ]; then
$sudo_command $PACMAN -S --noconfirm --asdeps --needed libvirt augeas rubygems libpcap $sudo_command $PACMAN -S --noconfirm --asdeps --needed libvirt augeas rubygems libpcap
fi fi
if [ $travis -eq 0 ]; then if ! in_ci; then
if [ ! -z "$YUM" ]; then if [ ! -z "$YUM" ]; then
if [ -z "$GO" ]; then if [ -z "$GO" ]; then
$sudo_command $YUM install -y golang golang-googlecode-tools-stringer || $sudo_command $YUM install -y golang-bin # centos-7 epel $sudo_command $YUM install -y golang golang-googlecode-tools-stringer || $sudo_command $YUM install -y golang-bin # centos-7 epel
@@ -132,8 +129,10 @@ go get golang.org/x/lint/golint # for `golint`-ing
go get golang.org/x/tools/cmd/goimports # for fmt go get golang.org/x/tools/cmd/goimports # for fmt
go get github.com/tmthrgd/go-bindata/go-bindata # for compiling in non golang files go get github.com/tmthrgd/go-bindata/go-bindata # for compiling in non golang files
go get github.com/dvyukov/go-fuzz/go-fuzz # for fuzzing the mcl lang bits go get github.com/dvyukov/go-fuzz/go-fuzz # for fuzzing the mcl lang bits
if env | grep -q -e '^TRAVIS=true$' -e '^JENKINS_URL=' -e '^BUILD_TAG=jenkins'; then if in_ci; then
go get -u gopkg.in/alecthomas/gometalinter.v1 && mv "$(dirname $(command -v gometalinter.v1))/gometalinter.v1" "$(dirname $(command -v gometalinter.v1))/gometalinter" && gometalinter --install # bonus go get -u gopkg.in/alecthomas/gometalinter.v1 && \
mv "$(dirname $(command -v gometalinter.v1))/gometalinter.v1" "$(dirname $(command -v gometalinter.v1))/gometalinter" && \
gometalinter --install # bonus
fi fi
command -v mdl &>/dev/null || gem install mdl --no-document || true # for linting markdown files command -v mdl &>/dev/null || gem install mdl --no-document || true # for linting markdown files
command -v fpm &>/dev/null || gem install fpm --no-document || true # for cross distro packaging command -v fpm &>/dev/null || gem install fpm --no-document || true # for cross distro packaging

View File

@@ -76,8 +76,7 @@ fi
# run-test ./test/test-crossbuild.sh # run-test ./test/test-crossbuild.sh
# do these longer tests only when running on ci # do these longer tests only when running on ci
if env | grep -q -e '^TRAVIS=true$' -e '^JENKINS_URL=' -e '^BUILD_TAG=jenkins'; then if in_ci; then
if label-block "shell"; then if label-block "shell"; then
run-testsuite ./test/test-shell.sh run-testsuite ./test/test-shell.sh
fi fi

View File

@@ -2,7 +2,7 @@
. "$(dirname "$0")/../util.sh" . "$(dirname "$0")/../util.sh"
if env | grep -q -e '^TRAVIS=true$'; then if in_ci travis; then
# this often fails in travis with: `address already in use` # this often fails in travis with: `address already in use`
echo "Travis gives wonky results here, skipping test!" echo "Travis gives wonky results here, skipping test!"
exit exit

View File

@@ -2,7 +2,7 @@
. "$(dirname "$0")/../util.sh" . "$(dirname "$0")/../util.sh"
if env | grep -q -e '^TRAVIS=true$'; then if in_ci travis jenkins; then
# inotify doesn't seem to work properly on travis # inotify doesn't seem to work properly on travis
echo "Travis and Jenkins give wonky results here, skipping test!" echo "Travis and Jenkins give wonky results here, skipping test!"
exit exit

View File

@@ -4,7 +4,7 @@
exit 0 # TODO: this test needs to be update to use deploys instead exit 0 # TODO: this test needs to be update to use deploys instead
#if env | grep -q -e '^TRAVIS=true$'; then #if in_ci; then
# # inotify doesn't seem to work properly on travis # # inotify doesn't seem to work properly on travis
# echo "Travis and Jenkins give wonky results here, skipping test!" # echo "Travis and Jenkins give wonky results here, skipping test!"
# exit # exit

View File

@@ -8,7 +8,7 @@ cd "${ROOT}"
. test/util.sh . test/util.sh
# travis is slow for some reason # travis is slow for some reason
if env | grep -q -e '^TRAVIS=true$'; then if in_ci travis; then
export GO_TEST_TIMEOUT_SCALE=3 export GO_TEST_TIMEOUT_SCALE=3
fi fi

View File

@@ -13,7 +13,7 @@ ROOT=$(dirname "${BASH_SOURCE}")/..
cd "${ROOT}" cd "${ROOT}"
. test/util.sh . test/util.sh
#if env | grep -q -e '^TRAVIS=true$' -e '^JENKINS_URL=' -e '^BUILD_TAG=jenkins'; then #if in_ci travis jenkins; then
# echo "Travis and Jenkins give wonky results here, skipping test!" # echo "Travis and Jenkins give wonky results here, skipping test!"
# exit 0 # exit 0
#fi #fi

View File

@@ -20,26 +20,43 @@ fi
TIMEOUT="$timeout --kill-after=360s --signal=QUIT 300s" TIMEOUT="$timeout --kill-after=360s --signal=QUIT 300s"
fail_test() in_ci() {
{ if [ $# -eq 0 ]; then
test -n "$CI" -o -n "$TRAVIS" -o -n "$JENKINS_URL"
return $?
fi
for var in "$@"; do
case "$var" in
travis)
test "$TRAVIS" = "true" && return 0;;
jenkins)
test -n "$JENKINS_URL" && return 0;;
*)
continue;;
esac
done
return 1
}
fail_test() {
echo -e "FAIL: $@" echo -e "FAIL: $@"
exit 1 exit 1
} }
function run-test() function run-test() {
{
"$@" || failures=$( [ -n "$failures" ] && echo "$failures\\n$@" || echo "$@" ) "$@" || failures=$( [ -n "$failures" ] && echo "$failures\\n$@" || echo "$@" )
} }
# travis expander helpers from: # travis expander helpers from:
# https://github.com/travis-ci/travis-rubies/blob/build/build.sh # https://github.com/travis-ci/travis-rubies/blob/build/build.sh
fold_start() { fold_start() {
if env | grep -q -e '^TRAVIS=true$'; then if in_ci travis; then
echo -e "travis_fold:start:$1\033[33;1m$2\033[0m" echo -e "travis_fold:start:$1\033[33;1m${@:2}\033[0m"
fi fi
} }
fold_end() { fold_end() {
if env | grep -q -e '^TRAVIS=true$'; then if in_ci travis; then
echo -e "\ntravis_fold:end:$1\r" echo -e "\ntravis_fold:end:$1\r"
fi fi
} }