@@ -145,7 +145,7 @@ func (scope *scopeT) driverNamed(name string, opts ...ydb.Option) *ydb.Driver {
145145}
146146
147147func (scope * scopeT ) SQLDriver (opts ... ydb.ConnectorOption ) * sql.DB {
148- return scope . Cache ( nil , nil , func () (res interface {}, err error ) {
148+ f := func () (* fixenv. GenericResult [ * sql. DB ], error ) {
149149 driver := scope .Driver ()
150150 scope .Logf ("Create sql db connector" )
151151 connector , err := ydb .Connector (driver , opts ... )
@@ -160,8 +160,9 @@ func (scope *scopeT) SQLDriver(opts ...ydb.ConnectorOption) *sql.DB {
160160 if err != nil {
161161 return nil , err
162162 }
163- return db , nil
164- }).(* sql.DB )
163+ return fixenv .NewGenericResult (db ), nil
164+ }
165+ return fixenv .CacheResult (scope .Env , f )
165166}
166167
167168func (scope * scopeT ) SQLDriverWithFolder (opts ... ydb.ConnectorOption ) * sql.DB {
@@ -190,15 +191,15 @@ func (scope *scopeT) Folder() string {
190191}
191192
192193func (scope * scopeT ) Logger () * testLogger {
193- return scope .Cache ( nil , nil , func () (res interface {}, err error ) {
194- return newLogger (scope .t ), nil
194+ return scope .CacheResult ( func () (* fixenv. Result , error ) {
195+ return fixenv . NewResult ( newLogger (scope .t ) ), nil
195196 }).(* testLogger )
196197}
197198
198199func (scope * scopeT ) LoggerMinLevel (level log.Level ) * testLogger {
199- return scope .Cache ( level , nil , func () (res interface {} , err error ) {
200- return newLoggerWithMinLevel (scope .t , level ), nil
201- }).(* testLogger )
200+ return scope .CacheResult ( func () (res * fixenv. Result , err error ) {
201+ return fixenv . NewResult ( newLoggerWithMinLevel (scope .t , level ) ), nil
202+ }, fixenv. CacheOptions { CacheKey : level } ).(* testLogger )
202203}
203204
204205func (scope * scopeT ) TopicConsumerName () string {
@@ -324,8 +325,9 @@ func (scope *scopeT) TableName(opts ...func(t *tableNameParams)) string {
324325 opt (& params )
325326 }
326327 }
327- return scope .Cache (params .tableName , nil , func () (res interface {}, err error ) {
328- err = scope .Driver ().Table ().Do (scope .Ctx , func (ctx context.Context , s table.Session ) (err error ) {
328+
329+ f := func () (* fixenv.GenericResult [string ], error ) {
330+ createTableErr := scope .Driver ().Table ().Do (scope .Ctx , func (ctx context.Context , s table.Session ) (err error ) {
329331 if len (params .createTableOptions ) == 0 {
330332 tmpl , err := template .New ("" ).Parse (params .createTableQueryTemplate )
331333 if err != nil {
@@ -347,10 +349,23 @@ func (scope *scopeT) TableName(opts ...func(t *tableNameParams)) string {
347349 }
348350 return s .ExecuteSchemeQuery (ctx , query .String ())
349351 }
352+
350353 return s .CreateTable (ctx , path .Join (scope .Folder (), params .tableName ), params .createTableOptions ... )
351354 })
352- return params .tableName , err
353- }).(string )
355+
356+ cleanup := func () {
357+ // doesn't drop table after fail test - for debugging
358+ if createTableErr == nil && ! scope .t .Failed () {
359+ _ = scope .Driver ().Table ().Do (scope .Ctx , func (ctx context.Context , s table.Session ) error {
360+ return s .DropTable (ctx , params .tableName )
361+ })
362+ }
363+ }
364+
365+ return fixenv .NewGenericResultWithCleanup (params .tableName , cleanup ), createTableErr
366+ }
367+
368+ return fixenv .CacheResult (scope .Env , f , fixenv.CacheOptions {CacheKey : params .tableName })
354369}
355370
356371// TablePath return path to example table with struct:
0 commit comments