-
Notifications
You must be signed in to change notification settings - Fork 18.8k
Closed as not planned
Labels
Description
Package Structure:
/pkg
x_test.go
/pkg/sub-package
y_test.go
x_test.go
import "testing"
import "github.com/ory/dockertest"
func TestMain(m *testing.M) {
pool, _ := dockertest.NewPool("")
resource, _ := pool.Run("mysql", "5.7", []string{"MYSQL_ROOT_PASSWORD=secret"}) // Create and run container
defer pool.Purge(resource) // Kill container
m.Run()
}
func TestXXX(t *testing.T) {
// Do some tests using mysql container running
}y_test.go
import "testing"
import "github.com/ory/dockertest"
func TestMain(m *testing.M) {
pool, _ := dockertest.NewPool("")
resource, _ := pool.Run("mysql", "5.7", []string{"MYSQL_ROOT_PASSWORD=secret"}) // Create and run container
defer pool.Purge(resource) // Kill container
m.Run()
}
func TestYYY(t *testing.T) {
// Do some tests using mysql container running
}If I run the tests in each directory separately, it works perfectly:
- It creates mysql container.
- It Runs the tests.
- It kills the docker container
- Tests end and test results returned
If however I run go test -v ./... from the parent directory:
The tests error out at pool.Run saying that mysql container already exists.
I believe the correct behaviour should be that TestMain should be run independently and sequentially. Only After outer TestMain returns should the inner packages be tested.
That way the containers are already killed before the inner packages are tested, giving the opportunity for the inner package to create their own container (and cleanup themself)
Reactions are currently unavailable