fix: os.Exit() kills any deferred cleanup functions

os.Exit() itself is now also a deferred function, which will be the last to run.
This commit is contained in:
CPunch 2024-02-05 11:59:50 -06:00
parent 79f68187bf
commit 02afe67ac3
4 changed files with 24 additions and 4 deletions

View File

@ -32,6 +32,7 @@ func TestMain(m *testing.M) {
panic(err) panic(err)
} }
// this is fine since we don't defer anything
os.Exit(m.Run()) os.Exit(m.Run())
} }

View File

@ -18,6 +18,11 @@ var (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
ret := 1
defer func() {
os.Exit(ret)
}()
ctx := context.Background() ctx := context.Background()
psql, err := sqltestutil.StartPostgresContainer(ctx, "15") psql, err := sqltestutil.StartPostgresContainer(ctx, "15")
if err != nil { if err != nil {
@ -35,7 +40,7 @@ func TestMain(m *testing.M) {
panic(err) panic(err)
} }
os.Exit(m.Run()) ret = m.Run()
} }
func TestDBAccount(t *testing.T) { func TestDBAccount(t *testing.T) {

View File

@ -14,6 +14,11 @@ var (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
ret := 1
defer func() {
os.Exit(ret)
}()
r, err := miniredis.Run() r, err := miniredis.Run()
if err != nil { if err != nil {
panic(err) panic(err)
@ -26,7 +31,7 @@ func TestMain(m *testing.M) {
} }
defer rh.Close() defer rh.Close()
os.Exit(m.Run()) ret = m.Run()
} }
func TestRedisLogin(t *testing.T) { func TestRedisLogin(t *testing.T) {

View File

@ -22,6 +22,11 @@ var (
rh *redis.RedisHandler rh *redis.RedisHandler
) )
/*
test data was scraped by dumping packets, just adding a println to the LoginService
to print the packet data
*/
var ( var (
testCharCreate = protocol.SP_CL2LS_REQ_CHAR_CREATE{ testCharCreate = protocol.SP_CL2LS_REQ_CHAR_CREATE{
PCStyle: protocol.SPCStyle{ PCStyle: protocol.SPCStyle{
@ -42,6 +47,11 @@ var (
) )
func TestMain(m *testing.M) { func TestMain(m *testing.M) {
ret := 1
defer func() {
os.Exit(ret)
}()
ctx, cancel := context.WithCancel(context.Background()) ctx, cancel := context.WithCancel(context.Background())
defer cancel() defer cancel()
@ -70,10 +80,9 @@ func TestMain(m *testing.M) {
// wait for login server to start, then start tests // wait for login server to start, then start tests
<-loginSrv.Service().Started() <-loginSrv.Service().Started()
ret := m.Run() ret = m.Run()
cancel() cancel()
<-loginSrv.Service().Stopped() <-loginSrv.Service().Stopped()
os.Exit(ret)
} }
// This test tries a typical login sequence. // This test tries a typical login sequence.