github.com/alkemics/goflow@v0.2.1/errors_test.go (about) 1 package goflow 2 3 import ( 4 "errors" 5 "strings" 6 "testing" 7 8 "github.com/stretchr/testify/suite" 9 "gopkg.in/yaml.v2" 10 ) 11 12 type ErrorSuite struct { 13 suite.Suite 14 } 15 16 func TestErrorSuite(t *testing.T) { 17 suite.Run(t, new(ErrorSuite)) 18 } 19 20 func (s ErrorSuite) TestMultiError_flatten() { 21 merr := MultiError{ 22 Errs: []error{ 23 errors.New("1"), 24 errors.New("2"), 25 MultiError{ 26 Errs: []error{ 27 errors.New("3"), 28 errors.New("4"), 29 }, 30 }, 31 errors.New("5"), 32 MultiError{ 33 Errs: []error{ 34 errors.New("6"), 35 MultiError{ 36 Errs: []error{ 37 errors.New("7"), 38 errors.New("8"), 39 }, 40 }, 41 MultiError{ 42 Errs: []error{ 43 errors.New("9"), 44 errors.New("10"), 45 }, 46 }, 47 }, 48 }, 49 }, 50 } 51 52 flattened := merr.flatten() 53 expected := MultiError{ 54 Errs: []error{ 55 errors.New("1"), 56 errors.New("2"), 57 errors.New("3"), 58 errors.New("4"), 59 errors.New("5"), 60 errors.New("6"), 61 errors.New("7"), 62 errors.New("8"), 63 errors.New("9"), 64 errors.New("10"), 65 }, 66 } 67 s.Assert().Equal(expected, flattened) 68 } 69 70 func (s ErrorSuite) TestParseYAMLError_nil() { 71 yamlErr := ParseYAMLError(nil) 72 s.Assert().Nil(yamlErr) 73 } 74 75 func (s ErrorSuite) TestParseYAMLError_notYAML() { 76 err := errors.New("not a yaml error") 77 yamlErr := ParseYAMLError(err) 78 s.Assert().Equal(err, yamlErr) 79 } 80 81 func (s ErrorSuite) TestParseYAMLError() { 82 r := strings.NewReader(` 83 - key: value 84 error 85 `) 86 err := yaml.NewDecoder(r).Decode(nil) 87 yamlErr := ParseYAMLError(err) 88 expected := YAMLError{ 89 Line: 4, 90 Err: errors.New("could not find expected ':'"), 91 } 92 s.Assert().Equal(expected, yamlErr) 93 }