Adding iodine error conversion

master
Frederick F. Kautz IV 10 years ago
parent e2c54a0904
commit c12d5ea8a9
  1. 22
      pkg/iodine/iodine.go
  2. 13
      pkg/iodine/iodine_test.go

@ -19,6 +19,7 @@ package iodine
import ( import (
"bytes" "bytes"
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"os" "os"
"path" "path"
@ -93,6 +94,27 @@ func GetGlobalStateKey(k string) string {
return result 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. // New - instantiate an error, turning it into an iodine error.
// Adds an initial stack trace. // Adds an initial stack trace.
func New(err error, data map[string]string) error { func New(err error, data map[string]string) error {

@ -22,6 +22,7 @@ import (
"testing" "testing"
"encoding/json" "encoding/json"
"os"
) )
func TestIodine(t *testing.T) { 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…
Cancel
Save