#!/usr/bin/env bash # # Run all CNI tests # ./test # ./test -v # # Run tests for one package # PKG=./plugins/ipam/dhcp ./test # set -e source ./build TESTABLE="libcni plugins/ipam/dhcp plugins/ipam/dhcp plugins/ipam/host-local/backend/allocator plugins/ipam/host-local/backend plugins/main/loopback pkg/invoke pkg/ns pkg/skel pkg/types pkg/utils plugins/main/ipvlan plugins/main/macvlan plugins/main/bridge plugins/main/ptp plugins/test/noop pkg/utils/hwaddr pkg/ip pkg/version pkg/version/testhelpers plugins/meta/flannel" FORMATTABLE="$TESTABLE pkg/testutils plugins/meta/flannel plugins/meta/tuning" # user has not provided PKG override if [ -z "$PKG" ]; then TEST=$TESTABLE FMT=$FORMATTABLE # user has provided PKG override else # strip out slashes and dots from PKG=./foo/ TEST=${PKG//\//} TEST=${TEST//./} # only run gofmt on packages provided by user FMT="$TEST" fi # split TEST into an array and prepend REPO_PATH to each local package split=(${TEST// / }) TEST=${split[@]/#/${REPO_PATH}/} echo -n "Running tests " function testrun { sudo -E bash -c "umask 0; PATH=$GOROOT/bin:$(pwd)/bin:$PATH go test -covermode set $@" } if [ ! -z "${COVERALLS}" ]; then echo "with coverage profile generation..." i=0 for t in ${TEST}; do testrun "-coverprofile ${i}.coverprofile ${t}" i=$((i+1)) done gover goveralls -service=travis-ci -coverprofile=gover.coverprofile -repotoken=$COVERALLS_TOKEN else echo "without coverage profile generation..." testrun "${TEST}" fi echo "Checking gofmt..." fmtRes=$(gofmt -l $FMT) if [ -n "${fmtRes}" ]; then echo -e "gofmt checking failed:\n${fmtRes}" exit 255 fi echo "Checking govet..." vetRes=$(go vet $TEST) if [ -n "${vetRes}" ]; then echo -e "govet checking failed:\n${vetRes}" exit 255 fi echo "Checking license header..." licRes=$( for file in $(find . -type f -iname '*.go' ! -path './vendor/*'); do head -n1 "${file}" | grep -Eq "(Copyright|generated)" || echo -e " ${file}" done ) if [ -n "${licRes}" ]; then echo -e "license header checking failed:\n${licRes}" exit 255 fi echo "Success"