Skip to content

Commit d95478c

Browse files
authored
add SuspendStack support (#15)
1 parent cdf856f commit d95478c

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

juju_adaptor.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,18 @@ func NewNoStackError(msg string) error {
6666
}
6767
}
6868

69+
// SuspendStack suspends stack for a exists error.
70+
// it can be used to suspend follow up Trace do not add stack.
71+
func SuspendStack(err error) error {
72+
if err == nil {
73+
return err
74+
}
75+
return withStack{
76+
err,
77+
&emptyStack,
78+
}
79+
}
80+
6981
// ErrorStack will format a stack trace if it is available, otherwise it will be Error()
7082
// If the error is nil, the empty string is returned
7183
// Note that this just calls fmt.Sprintf("%+v", err)

stack_test.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package errors
22

33
import (
44
"fmt"
5+
"io"
56
"runtime"
67
"testing"
78
)
@@ -288,7 +289,7 @@ func TestNewStack(t *testing.T) {
288289
}
289290
}
290291

291-
func TestSuspendStackError(t *testing.T) {
292+
func TestNewNoStackError(t *testing.T) {
292293
err := NewNoStackError("test error")
293294
err = Trace(err)
294295
err = Trace(err)
@@ -297,3 +298,13 @@ func TestSuspendStackError(t *testing.T) {
297298
t.Errorf("NewNoStackError(): want %s, got %v", "test error", result)
298299
}
299300
}
301+
302+
func TestSuspendStackError(t *testing.T) {
303+
err := io.EOF
304+
err = SuspendStack(err)
305+
err = Trace(err)
306+
result := fmt.Sprintf("%+v", err)
307+
if result != "EOF" {
308+
t.Errorf("NewNoStackError(): want %s, got %v", "EOF", result)
309+
}
310+
}

0 commit comments

Comments
 (0)