From 6d5823beb13595e8fc6778fd5cd4f3ed85440475 Mon Sep 17 00:00:00 2001 From: CrazyMax <1951866+crazy-max@users.noreply.github.com> Date: Tue, 11 Jun 2024 09:35:26 +0200 Subject: [PATCH] test: setup integration tests coverage Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com> --- .github/workflows/build.yml | 1 + Dockerfile | 37 ++++++++++++++++++++++++++++++++----- docker-bake.hcl | 4 ++++ hack/test | 23 +++++++++++++++++++++-- tests/integration.go | 4 ++++ 5 files changed, 62 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bedd8eba..cab7c457 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,6 +36,7 @@ jobs: TESTFLAGS_DOCKER: "-v --parallel=1 --timeout=30m" TEST_IMAGE_BUILD: "0" TEST_IMAGE_ID: "buildx-tests" + TEST_COVERAGE: "1" strategy: fail-fast: false matrix: diff --git a/Dockerfile b/Dockerfile index f69972f8..a13fa833 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,10 +27,36 @@ WORKDIR /src FROM gobase AS gotestsum ARG GOTESTSUM_VERSION -ENV GOFLAGS= -RUN --mount=target=/root/.cache,type=cache \ - GOBIN=/out/ go install "gotest.tools/gotestsum@${GOTESTSUM_VERSION}" && \ - /out/gotestsum --version +ENV GOFLAGS="" +RUN --mount=target=/root/.cache,type=cache < "$coverdir/merged-report.txt" +mv "$coverdir/merged-report.txt" "$GO_TEST_COVERPROFILE" +rm "$coverdir/helpers-report.txt" +for f in "$coverdir/helpers"/*; do + rm "$f" +done +rmdir "$coverdir/helpers" +exit $ecode +EOF FROM gobase AS buildx-version RUN --mount=type=bind,target=. </dev/null 2>/dev/null; then @@ -32,5 +33,23 @@ if [ "$TEST_KEEP_CACHE" != "1" ]; then trap 'docker rm -v $cacheVolume' EXIT fi -cid=$(docker create --rm -v /tmp $testReportsVol --volumes-from=$cacheVolume -e GITHUB_REF -e TEST_DOCKERD -e TEST_BUILDKIT_IMAGE -e TEST_BUILDKIT_TAG -e TEST_BUILDX_EXPERIMENTAL -e SKIP_INTEGRATION_TESTS -e GOTESTSUM_FORMAT ${BUILDKIT_INTEGRATION_SNAPSHOTTER:+"-eBUILDKIT_INTEGRATION_SNAPSHOTTER"} -e BUILDKIT_REGISTRY_MIRROR_DIR=/root/.cache/registry --privileged $TEST_IMAGE_ID gotestsum $gotestsumArgs --packages="${TESTPKGS:-./...}" -- $gotestArgs ${TESTFLAGS:--v}) +if [ "$TEST_COVERAGE" = "1" ]; then + export GO_TEST_COVERPROFILE="/testreports/coverage-report$TEST_REPORT_SUFFIX.txt" +fi + +cid=$(docker create --rm --privileged \ + -v /tmp $testReportsVol \ + --volumes-from=$cacheVolume \ + -e GITHUB_REF \ + -e TEST_DOCKERD \ + -e TEST_BUILDKIT_IMAGE \ + -e TEST_BUILDKIT_TAG \ + -e TEST_BUILDX_EXPERIMENTAL \ + -e SKIP_INTEGRATION_TESTS \ + -e GOTESTSUM_FORMAT \ + -e GO_TEST_COVERPROFILE \ + ${BUILDKIT_INTEGRATION_SNAPSHOTTER:+"-eBUILDKIT_INTEGRATION_SNAPSHOTTER"} \ + -e BUILDKIT_REGISTRY_MIRROR_DIR=/root/.cache/registry \ + $TEST_IMAGE_ID gotestsumandcover $gotestsumArgs --packages="${TESTPKGS:-./...}" -- $gotestArgs ${TESTFLAGS:--v}) + docker start -a -i $cid diff --git a/tests/integration.go b/tests/integration.go index 0d8da93f..a17b9569 100644 --- a/tests/integration.go +++ b/tests/integration.go @@ -66,6 +66,10 @@ func buildxCmd(sb integration.Sandbox, opts ...cmdOpt) *exec.Cmd { if isExperimental() { cmd.Env = append(cmd.Env, "BUILDX_EXPERIMENTAL=1") } + if v := os.Getenv("GO_TEST_COVERPROFILE"); v != "" { + coverDir := filepath.Join(filepath.Dir(v), "helpers") + cmd.Env = append(cmd.Env, "GOCOVERDIR="+coverDir) + } return cmd }