Go: how to run tests for multiple packages?
go, mgo, unit-testing
Solution
apparently running `go test -p 1` runs everything sequentially (including build), I haven't see this argument in `go help test` or `go help testflag`
Problem
I have multiple packages under a subdirectory under src/, running the tests for each package with `go test` is working fine. When trying to run all tests with `go test ./...` the tests are running but it fails.. the tests are running against local database servers, each test file has global variables with db pointers. I tried to run the tests with `-parallel 1` to prevent contention in the db, but the tests still fail. what can be the issue here? EDIT: some tests are failing on missing DB entries, I completely clear the DB before and after each test. the only reason I can think of why this is happening is because of some contention between tests. EDIT 2: each one of my test files has 2 global variables (using mgo): ``` var session *mgo.Session var db *mgo.Database ``` also it has the following setup and teardown functions: ``` func setUp() { s, err := cfg.GetDBSession() if err != nil { panic(err) } session = s db = cfg.GetDB(session) db.DropDatabase() } func tearDown() { db.DropDatabase() session.Close() } ``` each tests startup with `setUp()` and `defer tearDown()` also cfg is: ``` package cfg import ( "labix.org/v2/mgo" ) func GetDBSession() (*mgo.Session, error) { session, err := mgo.Dial("localhost") return session, err } func GetDB(session *mgo.Session) *mgo.Database { return session.DB("test_db") } ``` EDIT 3: I changed cfg to use a random database, the tests passed. it seems that the tests from multiple packages are running somewhat in parallel. is it possible to force `go test` to run everything sequentially across packages ?