github.com/web-platform-tests/wpt.fyi@v0.0.0-20240530210107-70cf978996f1/shared/errors_test.go (about)

     1  // +build small
     2  
     3  // Copyright 2019 The WPT Dashboard Project. All rights reserved.
     4  // Use of this source code is governed by a BSD-style license that can be
     5  // found in the LICENSE file.
     6  
     7  package shared
     8  
     9  import (
    10  	"errors"
    11  	"testing"
    12  
    13  	"github.com/stretchr/testify/assert"
    14  )
    15  
    16  func TestNewMultiErrorFromChan_non_empty(t *testing.T) {
    17  	errs := make(chan error, 2)
    18  	errs <- errors.New("test1")
    19  	errs <- errors.New("test2")
    20  	close(errs)
    21  	err := NewMultiErrorFromChan(errs, "testing")
    22  	assert.Equal(t, "2 error(s) occurred when testing:\ntest1\ntest2", err.Error())
    23  	merr, ok := err.(MultiError)
    24  	assert.True(t, ok)
    25  	assert.Equal(t, 2, merr.Count())
    26  	assert.Equal(t, 2, len(merr.Errors()))
    27  }
    28  
    29  func TestNewMultiErrorFromChan_nil(t *testing.T) {
    30  	errs := make(chan error)
    31  	close(errs)
    32  	// It is vital to pre-declare the type of err.
    33  	var err error
    34  	err = NewMultiErrorFromChan(errs, "testing")
    35  	// Do NOT use assert.Nil: we use the `nil` literal intentionally here.
    36  	// This is equivalent to `err == nil`. Since err is declared as error,
    37  	// so we are comparing err against (error)(nil), which will fail if
    38  	// NewMultiErrorFromChan incorrectly returns a concrete
    39  	// (*MultiError)(nil).
    40  	assert.Equal(t, nil, err)
    41  	_, ok := err.(MultiError)
    42  	assert.False(t, ok)
    43  }
    44  
    45  func TestNewMultiError_non_empty(t *testing.T) {
    46  	errs := []error{errors.New("test1"), errors.New("test2")}
    47  	err := NewMultiError(errs, "testing")
    48  	assert.Equal(t, "2 error(s) occurred when testing:\ntest1\ntest2", err.Error())
    49  	merr, ok := err.(MultiError)
    50  	assert.True(t, ok)
    51  	assert.Equal(t, 2, merr.Count())
    52  	assert.Equal(t, 2, len(merr.Errors()))
    53  }
    54  
    55  func TestNewMultiError_nil(t *testing.T) {
    56  	var err error
    57  	err = NewMultiError(nil, "testing")
    58  	assert.Equal(t, nil, err)
    59  }