For easily setting up tests that rely on services in a docker-compose.yml
Do you want your tests to be setup with:
-
docker compose pull -
docker compose build -
docker compose up -
Some logic to know containers are ready
-
YOUR TESTS HERE
Followed by
-
docker compose down?
Yes? Then we've got you covered. No? Make a P.R. ⌨️ ❤️
Wrap you m.Run() and ezdc will take care of spinning up your containers and checking that they're ready before
running your tests.
Have a look in the ./examples dir for runnable tests.
package my_test
import (
"os"
"testing"
"github.com/lynchborg/ezdc"
)
func TestMain(m *testing.M) {
h := ezdc.Harness{
ProjectName: "ezdc-example",
Services: []ezdc.Service{
{
Name: "nats",
// will pull before starting tests
Pull: true,
// will wait for nats to listen on localhost:4222
Waiter: ezdc.TcpWaiter{
Port: 4222,
},
},
},
}
// h.Run does
// - down (removes volumes)
// - pull (for any configured services with Pull = TRUE)
// - build
// - up
// And when the callback is finished, will run down
c, err := h.Run(context.Background(), m.Run)
if err != nil {
panic(err)
}
os.Exit(c)
}| Setting | |
|---|---|
| ProjectName | The project name to give to docker-compose. Required |
| File | Path to docker-compose file. Defaults to ./docker-compose.yml |
| Services | Configuration of services. Optional. |
| Logs | Where to send the docker-compose output. Defaults to os.Stdout. |
| Setting | |
|---|---|
| Name | Name of the service. Doesn't necessarily have to match any in the docker compose file, but does if Pull is TRUE |
| Pull | Pull the image before running tests. Default is false. |
| Waiter | Configures how to declare your service 'ready'. Optional. |
Currently supports
- Http (
HttpWaiter) - Tcp (
TcpWaiter)