All Projects → mvdan → dockexec

mvdan / dockexec

Licence: BSD-3-Clause License
Run Go tests inside a Docker image

Programming Languages

go
31211 projects - #10 most used programming language

dockexec

Run Go tests inside a Docker image.

go install mvdan.cc/dockexec@latest
go test -exec='dockexec postgres:12.1'

You can also use custom flags for docker run, as well as any test flags:

go test -exec='dockexec [docker flags] image:tag' [test flags]

go run is also supported:

go run -exec='dockexec postgres:12.1' .

The goal is to easily test many packages with specific Docker images, without having to write the boilerplate code yourself. All previous alternatives weren't any good:

  • Running go test inside docker run requires your Go version to be installed in the image.
  • Running go test -c and running the test binary under docker run is tedious, error-prone, and doesn't scale to many packages.

Caveats

  • go test without package arguments runs tests with access to the current terminal. However, go test -exec="dockexec $image" will not, as dockexec cannot distinguish this mode from others like go test -exec="dockexec $image" ./.... If you want access to the terminal, supply the -t docker flag.

  • Docker images are assumed to be unix-like at the moment, and only Linux images are tested. Other platforms like Windows-native images may be supported in the future.

  • Beware that the Docker image may not have compatible C libraries, given the default of CGO_ENABLED=1. If you run into "no such file" exec errors, or glibc version mismatch errors, you should consider disabling cgo via CGO_ENABLED=0 or a fully static build.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].