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  }