...

Source file src/github.com/hashicorp/go-multierror/group_test.go

Documentation: github.com/hashicorp/go-multierror

     1  package multierror
     2  
     3  import (
     4  	"errors"
     5  	"strings"
     6  	"testing"
     7  )
     8  
     9  func TestGroup(t *testing.T) {
    10  	err1 := errors.New("group_test: 1")
    11  	err2 := errors.New("group_test: 2")
    12  
    13  	cases := []struct {
    14  		errs      []error
    15  		nilResult bool
    16  	}{
    17  		{errs: []error{}, nilResult: true},
    18  		{errs: []error{nil}, nilResult: true},
    19  		{errs: []error{err1}},
    20  		{errs: []error{err1, nil}},
    21  		{errs: []error{err1, nil, err2}},
    22  	}
    23  
    24  	for _, tc := range cases {
    25  		var g Group
    26  
    27  		for _, err := range tc.errs {
    28  			err := err
    29  			g.Go(func() error { return err })
    30  
    31  		}
    32  
    33  		gErr := g.Wait()
    34  		if gErr != nil {
    35  			for i := range tc.errs {
    36  				if tc.errs[i] != nil && !strings.Contains(gErr.Error(), tc.errs[i].Error()) {
    37  					t.Fatalf("expected error to contain %q, actual: %v", tc.errs[i].Error(), gErr)
    38  				}
    39  			}
    40  		} else if !tc.nilResult {
    41  			t.Fatalf("Group.Wait() should not have returned nil for errs: %v", tc.errs)
    42  		}
    43  	}
    44  }
    45  

View as plain text