diff --git a/tools/routine/routine_test.go b/tools/routine/routine_test.go index 1032a883..bb588456 100644 --- a/tools/routine/routine_test.go +++ b/tools/routine/routine_test.go @@ -1,6 +1,7 @@ package routine_test import ( + "errors" "strings" "sync" "testing" @@ -28,24 +29,51 @@ func TestFireAndForget(t *testing.T) { } func TestSafeWrap(t *testing.T) { - called := false + t.Run("panic", func(t *testing.T) { + called := false - fn := func() error { - called = true - panic("test_recover") - } + fn := func() error { + called = true + panic("test_recover") + } - err := routine.SafeWrap(fn)() + err := routine.SafeWrap(fn)() - if !called { - t.Fatal("Expected fn to be called.") - } + if !called { + t.Fatal("Expected fn to be called.") + } - if err == nil { - t.Fatal("Expected fn panic to be converted to error") - } + if err == nil { + t.Fatal("Expected fn panic to be converted to error") + } - if !strings.Contains(err.Error(), "test_recover") { - t.Fatal("Expected the returned error to contain the recovered panic value") - } + if !strings.Contains(err.Error(), "test_recover") { + t.Fatal("Expected the returned error to contain the recovered panic value") + } + }) + + t.Run("regular error", func(t *testing.T) { + called := false + + fn := func() error { + called = true + return errors.New("test_error") + } + + err := routine.SafeWrap(fn)() + + if !called { + t.Fatal("Expected fn to be called.") + } + + if err == nil { + t.Fatal("Expected to return the wrapped fn error") + } + + errStr := err.Error() + expected := "test_error" + if errStr != expected { + t.Fatalf("Expected %s error, got %s", expected, errStr) + } + }) }