Move ErrorList to util

This commit is contained in:
Tim Hockin
2014-09-20 20:20:23 -07:00
parent 6947331290
commit 7e83211840
4 changed files with 109 additions and 60 deletions

View File

@@ -20,6 +20,7 @@ import (
"fmt"
"strings"
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
"github.com/golang/glog"
)
@@ -105,30 +106,11 @@ func NewFieldNotFound(field string, value interface{}) ValidationError {
// interface to avoid confusion where an empty ErrorList would still be an
// error (non-nil). To produce a single error instance from an ErrorList, use
// the ToError() method, which will return nil for an empty ErrorList.
type ErrorList []error
// This helper implements the error interface for ErrorList, but prevents
// accidental conversion of ErrorList to error.
type errorListInternal ErrorList
// Error is part of the error interface.
func (list errorListInternal) Error() string {
if len(list) == 0 {
return ""
}
sl := make([]string, len(list))
for i := range list {
sl[i] = list[i].Error()
}
return strings.Join(sl, "; ")
}
type ErrorList util.ErrorList
// ToError converts an ErrorList into a "normal" error, or nil if the list is empty.
func (list ErrorList) ToError() error {
if len(list) == 0 {
return nil
}
return errorListInternal(list)
return util.ErrorList(list).ToError()
}
// Prefix adds a prefix to the Field of every ValidationError in the list. Returns

View File

@@ -17,7 +17,6 @@ limitations under the License.
package errors
import (
"fmt"
"strings"
"testing"
)
@@ -64,44 +63,6 @@ func TestValidationError(t *testing.T) {
}
}
func TestErrorList(t *testing.T) {
errList := ErrorList{}
if a := errList.ToError(); a != nil {
t.Errorf("unexpected non-nil error for empty list: %v", a)
}
if a := errorListInternal(errList).Error(); a != "" {
t.Errorf("expected empty string, got %v", a)
}
errList = append(errList, NewFieldInvalid("field", "value"))
// The fact that this compiles is the test.
}
func TestErrorListToError(t *testing.T) {
errList := ErrorList{}
err := errList.ToError()
if err != nil {
t.Errorf("expected nil, got %v", err)
}
testCases := []struct {
errs ErrorList
expected string
}{
{ErrorList{fmt.Errorf("abc")}, "abc"},
{ErrorList{fmt.Errorf("abc"), fmt.Errorf("123")}, "abc; 123"},
}
for _, testCase := range testCases {
err := testCase.errs.ToError()
if err == nil {
t.Errorf("expected an error, got nil: ErrorList=%v", testCase)
continue
}
if err.Error() != testCase.expected {
t.Errorf("expected %q, got %q", testCase.expected, err.Error())
}
}
}
func TestErrListPrefix(t *testing.T) {
testCases := []struct {
Err ValidationError