12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #!/usr/bin/env bash
- #
- # Run unit tests and create report
- #
- # TESTFLAGS - add additional test flags. Ex:
- #
- # TESTFLAGS='-v -run TestBuild' hack/test/unit
- #
- # TESTDIRS - run tests for specified packages. Ex:
- #
- # TESTDIRS='./pkg/term' hack/test/unit
- #
- set -eux -o pipefail
- BUILDFLAGS=(-tags 'netgo journald')
- TESTFLAGS+=" -test.timeout=${TIMEOUT:-5m}"
- TESTDIRS="${TESTDIRS:-./...}"
- exclude_paths='/vendor/|/integration'
- pkg_list=$(go list $TESTDIRS | grep -vE "($exclude_paths)")
- base_pkg_list=$(echo "${pkg_list}" | grep --fixed-strings -v "/libnetwork" || :)
- libnetwork_pkg_list=$(echo "${pkg_list}" | grep --fixed-strings "/libnetwork" || :)
- echo "${libnetwork_pkg_list}" | grep --fixed-strings "libnetwork/drivers/bridge" \
- && if ! type docker-proxy; then
- hack/make.sh binary-proxy install-proxy
- fi
- mkdir -p bundles
- if [ -n "${base_pkg_list}" ]; then
- gotestsum --format=standard-quiet --jsonfile=bundles/go-test-report.json --junitfile=bundles/junit-report.xml -- \
- "${BUILDFLAGS[@]}" \
- -cover \
- -coverprofile=bundles/coverage.out \
- -covermode=atomic \
- ${TESTFLAGS} \
- ${base_pkg_list}
- fi
- if [ -n "${libnetwork_pkg_list}" ]; then
- # libnetwork tests invoke iptables, and cannot be run in parallel. Execute
- # tests within /libnetwork with '-p=1' to run them sequentially. See
- # https://github.com/moby/moby/issues/42458#issuecomment-873216754 for details.
- gotestsum --format=standard-quiet --jsonfile=bundles/go-test-report-libnetwork.json --junitfile=bundles/junit-report-libnetwork.xml -- \
- "${BUILDFLAGS[@]}" \
- -cover \
- -coverprofile=bundles/coverage-libnetwork.out \
- -covermode=atomic \
- -p=1 \
- ${TESTFLAGS} \
- ${libnetwork_pkg_list}
- fi
|