github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/gnovm/cmd/gno/testdata/gno_test/recover.txtar (about) 1 # Test recovering 2 3 gno test -v -run 'TestRecover$' . 4 5 ! stdout .+ 6 stderr 'recovered bad panic!' 7 stderr '--- PASS' 8 stderr 'ok ' 9 10 gno test -v -run 'TestRecoverSkip$' . 11 12 ! stdout .+ 13 stderr 'skipped' 14 ! stderr 'recovered.*testing.Recover' 15 stderr '--- SKIP' 16 stderr 'ok ' 17 18 gno test -v -run 'TestBadRecoverSkip$' . 19 20 ! stdout .+ 21 # should contain warning about using testing.Recover 22 stderr 'recovered.*testing.Recover' 23 # the test will still be marked as skipped 24 stderr '--- SKIP' 25 stderr 'ok ' 26 27 -- recov.gno -- 28 package recov 29 30 -- recov_test.gno -- 31 package recov 32 33 import "testing" 34 35 type RecoverySetter struct { 36 value interface{} 37 } 38 39 func (s *RecoverySetter) Set(v interface{}) { 40 s.value = v 41 } 42 43 func TestRecover(t *testing.T) { 44 var setter RecoverySetter 45 defer func() { 46 t.Log("recovered", setter.value) 47 }() 48 defer testing.Recover(&setter) 49 50 panic("bad panic!") 51 } 52 53 func TestRecoverSkip(t *testing.T) { 54 var setter RecoverySetter 55 defer func() { 56 t.Log("recovered", setter.value) 57 }() 58 defer testing.Recover(&setter) 59 60 t.Skip("skipped") 61 panic("bad panic!") 62 } 63 64 func TestBadRecoverSkip(t *testing.T) { 65 defer func() { 66 err := recover() 67 t.Log("recovered", err) 68 }() 69 70 t.Skip("skipped") 71 panic("bad panic!") 72 }