#!/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
