diff --git a/main_test.go b/main_test.go index 12ffdfe..9dc1e0d 100644 --- a/main_test.go +++ b/main_test.go @@ -3,6 +3,7 @@ package main import ( "testing" + "gorm.io/gorm" "gorm.io/playground/models" ) @@ -33,3 +34,25 @@ func TestGORM(t *testing.T) { // t.Errorf("Failed, got user name: %v", u.Name) // } // } + +func TestGORMScopesSessionTransactionLeak(t *testing.T) { + sqldb, err := DB.DB() + if err != nil { + t.Error(err) + } + + before := sqldb.Stats().InUse + + DB.Scopes(func(s *gorm.DB) *gorm.DB { + return s.Session(&gorm.Session{ + DryRun: true, + // Initialized: true, + }) + }).Where("name = 'jinzhu'").Delete(&models.User{}) + + after := sqldb.Stats().InUse + + if before != after { + t.Errorf("Failed, InUse connection %d != %d", before, after) + } +}