|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
. $(dirname $0)/util
|
|
|
|
set -eu -o pipefail
|
|
|
|
|
|
|
|
: ${BUILDX_NOCACHE=}
|
|
|
|
: ${TEST_COVERAGE=}
|
|
|
|
|
|
|
|
importCacheFlags=""
|
|
|
|
if [ -n "$cacheRefFrom" ]; then
|
|
|
|
if [ "$cacheType" = "local" ]; then
|
|
|
|
for ref in $cacheRefFrom; do
|
|
|
|
importCacheFlags="$importCacheFlags--cache-from=type=local,src=$ref "
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
iid="buildx-tests"
|
|
|
|
iidfile=$(mktemp -t docker-iidfile.XXXXXXXXXX)
|
|
|
|
|
|
|
|
coverageVol=""
|
|
|
|
coverageFlags=""
|
|
|
|
if [ "$TEST_COVERAGE" = "1" ]; then
|
|
|
|
covdir="$(pwd)/coverage"
|
|
|
|
mkdir -p "$covdir"
|
|
|
|
coverageVol="-v $covdir:/coverage"
|
|
|
|
coverageFlags="-coverprofile=/coverage/coverage.txt -covermode=atomic"
|
|
|
|
fi
|
|
|
|
|
|
|
|
buildxCmd build $importCacheFlags \
|
|
|
|
--target "integration-tests" \
|
|
|
|
--output "type=docker,name=$iid" \
|
|
|
|
$currentcontext
|
|
|
|
|
|
|
|
cacheVolume="buildx-cache"
|
|
|
|
if ! docker inspect "$cacheVolume" > /dev/null 2>&1; then
|
|
|
|
cacheVolume=$(docker create --name=buildx-cache -v /root/.cache -v /go/pkg/mod alpine)
|
|
|
|
fi
|
|
|
|
|
|
|
|
docker run --rm -v /tmp $coverageVol --volumes-from=$cacheVolume --privileged $iid go test $coverageFlags ${TESTFLAGS:--v} ${TESTPKGS:-./...}
|
|
|
|
|
|
|
|
if [ -n "$BUILDX_NOCACHE" ]; then
|
|
|
|
docker rm -v $cacheVolume
|
|
|
|
fi
|
|
|
|
|
|
|
|
rm "$iidfile"
|
|
|
|
docker rmi $iid
|