errutil_test.go 998 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // Copyright 2020 The Gogs Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package errutil
  5. import (
  6. "errors"
  7. "testing"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. type notFoundError struct {
  11. val bool
  12. }
  13. func (notFoundError) Error() string {
  14. return "not found"
  15. }
  16. func (e notFoundError) NotFound() bool {
  17. return e.val
  18. }
  19. func TestIsNotFound(t *testing.T) {
  20. tests := []struct {
  21. name string
  22. err error
  23. expVal bool
  24. }{
  25. {
  26. name: "error does not implement NotFound",
  27. err: errors.New("a simple error"),
  28. expVal: false,
  29. },
  30. {
  31. name: "error implements NotFound but not a not found",
  32. err: notFoundError{val: false},
  33. expVal: false,
  34. },
  35. {
  36. name: "error implements NotFound",
  37. err: notFoundError{val: true},
  38. expVal: true,
  39. },
  40. }
  41. for _, test := range tests {
  42. t.Run(test.name, func(t *testing.T) {
  43. assert.Equal(t, test.expVal, IsNotFound(test.err))
  44. })
  45. }
  46. }