blob: 802252bbd9f3b99c4c5e95a758beca7ecf06373a [file] [log] [blame]
// Copyright 2020 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build linux || darwin
// +build linux darwin
package dashboard
import (
"errors"
"testing"
"cloud.google.com/go/datastore"
)
var testError = errors.New("this is a test error for cmd/coordinator")
func ignoreTestError(err error) error {
if !errors.Is(err, testError) {
return err
}
return nil
}
func ignoreNothing(err error) error {
return err
}
func TestFilterMultiError(t *testing.T) {
cases := []struct {
desc string
err error
ignores []ignoreFunc
wantErr bool
}{
{
desc: "single ignored error",
err: datastore.MultiError{testError},
ignores: []ignoreFunc{ignoreTestError},
},
{
desc: "multiple ignored errors",
err: datastore.MultiError{testError, testError},
ignores: []ignoreFunc{ignoreTestError},
},
{
desc: "non-ignored error",
err: datastore.MultiError{testError, errors.New("this should fail")},
ignores: []ignoreFunc{ignoreTestError},
wantErr: true,
},
{
desc: "nil error",
ignores: []ignoreFunc{ignoreTestError},
},
{
desc: "non-multistore error",
err: errors.New("this should fail"),
ignores: []ignoreFunc{ignoreTestError},
wantErr: true,
},
{
desc: "no ignoreFuncs",
err: errors.New("this should fail"),
ignores: []ignoreFunc{},
wantErr: true,
},
{
desc: "if any ignoreFunc ignores, error is ignored.",
err: datastore.MultiError{testError, testError},
ignores: []ignoreFunc{ignoreNothing, ignoreTestError},
},
}
for _, c := range cases {
t.Run(c.desc, func(t *testing.T) {
if err := filterMultiError(c.err, c.ignores...); (err != nil) != c.wantErr {
t.Errorf("filterMultiError(%v, %v) = %v, wantErr = %v", c.err, c.ignores, err, c.wantErr)
}
})
}
}
func TestIgnoreNoSuchEntity(t *testing.T) {
if err := ignoreNoSuchEntity(datastore.ErrNoSuchEntity); err != nil {
t.Errorf("ignoreNoSuchEntity(%v) = %v, wanted no error", datastore.ErrNoSuchEntity, err)
}
if err := ignoreNoSuchEntity(datastore.ErrInvalidKey); err == nil {
t.Errorf("ignoreNoSuchEntity(%v) = %v, wanted error", datastore.ErrInvalidKey, err)
}
}