Skip to content

Commit

Permalink
Use gotestsum in system tests (#6230)
Browse files Browse the repository at this point in the history
## Motivation

`gotestsum` can be used to run a compiled test binary and parse its output which would allow us to use it for system tests as well.
  • Loading branch information
fasmat committed Aug 8, 2024
1 parent 6856e0f commit 714fa7b
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 9 deletions.
25 changes: 18 additions & 7 deletions systest/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM golang:1.22 as build
FROM golang:1.22 AS build
RUN set -ex \
&& apt-get update --fix-missing \
&& apt-get install -qy --no-install-recommends \
Expand All @@ -22,14 +22,25 @@ COPY . .

RUN --mount=type=cache,id=build,target=/root/.cache/go-build go test -failfast -v -c -o ./build/tests.test ./systest/tests/

FROM ubuntu:22.04
ENV CGO_ENABLED=0
RUN --mount=type=cache,id=build,target=/root/.cache/go-build go build -o ./build/test2json -ldflags="-s -w" cmd/test2json

ENV GOBIN=/bin
RUN --mount=type=cache,id=build,target=/root/.cache/go-build go install gotest.tools/gotestsum@v1.12.0

FROM ubuntu:22.04 AS runtime
RUN set -ex \
&& apt-get update --fix-missing \
&& apt-get install -qy --no-install-recommends \
ocl-icd-libopencl1 clinfo \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
&& apt-get update --fix-missing \
&& apt-get install -qy --no-install-recommends \
ocl-icd-libopencl1 clinfo \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
COPY --from=build /src/build/tests.test /bin/tests
COPY --from=build /src/build/test2json /bin/
COPY --from=build /bin/gotestsum /bin/
COPY --from=build /src/build/libpost.so /bin/
COPY --from=build /src/build/post-service /bin/
ENV LD_LIBRARY_PATH="/bin/"

ENV GOVERSION=1.22
ENV GOTESTSUM_FORMAT=standard-quiet
5 changes: 3 additions & 2 deletions systest/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ ifeq ($(configname),$(test_job_name))
run_deps = config
endif

command := tests -test.v -test.count=$(count) -test.timeout=60m -test.run=$(test_name) -test.parallel=$(clusters) \
command := gotestsum --raw-command -- test2json -t -p systest \
/bin/tests -test.v -test.count=$(count) -test.timeout=60m -test.run=$(test_name) -test.parallel=$(clusters) \
-test.failfast=$(failfast) -clusters=$(clusters) -level=$(level) -configname=$(configname)

.PHONY: docker
Expand Down Expand Up @@ -78,7 +79,7 @@ config: template

.PHONY: gomplate
gomplate:
@go install github.com/hairyhenderson/gomplate/v4/cmd/gomplate@v4.0.0-pre-1
@go install github.com/hairyhenderson/gomplate/v4/cmd/gomplate@v4.1.0

# Using bash to invoke ./wait_for_job.sh script to avoid problems on Mac
# where /bin/bash is an old bash
Expand Down

0 comments on commit 714fa7b

Please sign in to comment.