| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package common
- import (
- "os"
- "testing"
- "time"
- "github.com/mhsanaei/3x-ui/v3/internal/logger"
- "github.com/op/go-logging"
- )
- func TestMain(m *testing.M) {
- logger.InitLogger(logging.ERROR)
- os.Exit(m.Run())
- }
- func TestGoRecover_RunsFn(t *testing.T) {
- done := make(chan struct{})
- GoRecover("test-run", func() { close(done) })
- select {
- case <-done:
- case <-time.After(2 * time.Second):
- t.Fatal("fn did not run")
- }
- }
- func TestGoRecover_RecoversPanic(t *testing.T) {
- done := make(chan struct{})
- // If GoRecover did not recover, this panic would crash the test binary.
- GoRecover("test-panic", func() {
- defer close(done)
- panic("boom")
- })
- select {
- case <-done:
- case <-time.After(2 * time.Second):
- t.Fatal("goroutine did not complete")
- }
- // Let the deferred recover+log run before the test ends.
- time.Sleep(50 * time.Millisecond)
- }
|