Merge pull request #458 from fkautz/pr_out_adding_iodine_error_conversion
This commit is contained in:
commit
0e89facf7d
2 changed files with 35 additions and 0 deletions
|
@ -19,6 +19,7 @@ package iodine
|
|||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
|
@ -93,6 +94,27 @@ func GetGlobalStateKey(k string) string {
|
|||
return result
|
||||
}
|
||||
|
||||
func ToError(err error) error {
|
||||
switch err := err.(type) {
|
||||
case nil:
|
||||
{
|
||||
return nil
|
||||
}
|
||||
case Error:
|
||||
{
|
||||
if err.EmbeddedError != nil {
|
||||
return err.EmbeddedError
|
||||
} else {
|
||||
return errors.New(err.ErrorMessage)
|
||||
}
|
||||
}
|
||||
default:
|
||||
{
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// New - instantiate an error, turning it into an iodine error.
|
||||
// Adds an initial stack trace.
|
||||
func New(err error, data map[string]string) error {
|
||||
|
|
|
@ -22,6 +22,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"encoding/json"
|
||||
"os"
|
||||
)
|
||||
|
||||
func TestIodine(t *testing.T) {
|
||||
|
@ -101,3 +102,15 @@ func TestState(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestToError(t *testing.T) {
|
||||
_, err := os.Stat("hello")
|
||||
ierr := New(err, nil)
|
||||
if ToError(ierr) != err {
|
||||
t.Error("Error is not the same")
|
||||
}
|
||||
ierr = New(ierr, nil)
|
||||
if ToError(ierr) != err {
|
||||
t.Error("Stacked Error is not the same")
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue