Atlas › Test

TestFailureConverter_FailureError

Exact test identity: go.temporal.io/server/common/nexus/nexusrpc/TestFailureConverter_FailureError

Package
go.temporal.io/server/common/nexus/nexusrpc
Suite / test hierarchy
TestFailureConverter_FailureError
Test
TestFailureConverter_FailureError
Introduced at
failure_converter.go ×4 Frontier kind: Joint frontier
Covered ranges
11
Covered lines
21
Covered files
1

Covered source

Expand a file to inspect source; the > gutter marks covered lines.

go.temporal.io/server/common/nexus/nexusrpc/failure_converter.go 21 covered LOC · 11 ranges

Open complete file

46 // ErrorToFailure implements FailureConverter.
47 // nolint:revive // Keeping all of the logic together for readability, even if it means the function is long.
48 > func (e knownErrorFailureConverter) ErrorToFailure(err error) (nexus.Failure, error) { failure_converter.go
49 > if err == nil {
50 return nexus.Failure{}, nil
51 }
52 // NOTE: not using errors.Unwrap here we are intentionally only supporting unwrapping known errors.
53 > switch typedErr := err.(type) { failure_converter.go
54 > case *nexus.FailureError: failure_converter.go
55 > f := typedErr.Failure
56 > // FailureError is has both a Cause error and an underlying Failure Cause.
57 > // When instantiated directly, there are cases where only the Go error cause is set.
58 > // Preserve the embedded failure's cause, as the embedded failure is treated similarly to the OriginalFailure field for well-known other error types.
59 > if typedErr.Cause != nil && f.Cause == nil {
60 > c, err := e.ErrorToFailure(typedErr.Cause) failure_converter.go
61 > if err != nil {
62 return nexus.Failure{}, err
63 }
64 > f.Cause = &c failure_converter.go
65 }
66 > return f, nil failure_converter.go
67 case *nexus.HandlerError:
68 if typedErr.OriginalFailure != nil {
132 // FailureToError implements FailureConverter.
133 // nolint:revive // Keeping all of the logic together for readability, even if it means the function is long.
134 > func (e knownErrorFailureConverter) FailureToError(f nexus.Failure) (error, error) { failure_converter.go
135 > if f.Metadata != nil {
136 switch f.Metadata["type"] {
137 case "nexus.HandlerError":
177 }
178 // Note that the original failure cause is retained on the FailureError's failure object.
179 > fe := &nexus.FailureError{Failure: f} failure_converter.go
180 > if f.Cause != nil {
181 > c, err := e.FailureToError(*f.Cause) failure_converter.go
182 > if err != nil {
183 return nil, err
184 }
185 > fe.Cause = c failure_converter.go
186 }
187 > return fe, nil failure_converter.go
188 }
189