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