vizerror_test.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright (c) Tailscale Inc & AUTHORS
  2. // SPDX-License-Identifier: BSD-3-Clause
  3. package vizerror
  4. import (
  5. "errors"
  6. "fmt"
  7. "io/fs"
  8. "testing"
  9. )
  10. func TestNew(t *testing.T) {
  11. err := New("abc")
  12. if err.Error() != "abc" {
  13. t.Errorf(`New("abc").Error() = %q, want %q`, err.Error(), "abc")
  14. }
  15. }
  16. func TestErrorf(t *testing.T) {
  17. err := Errorf("%w", fs.ErrNotExist)
  18. if got, want := err.Error(), "file does not exist"; got != want {
  19. t.Errorf("Errorf().Error() = %q, want %q", got, want)
  20. }
  21. // ensure error wrapping still works
  22. if !errors.Is(err, fs.ErrNotExist) {
  23. t.Errorf("error chain does not contain fs.ErrNotExist")
  24. }
  25. }
  26. func TestAs(t *testing.T) {
  27. verr := New("visible error")
  28. err := fmt.Errorf("wrap: %w", verr)
  29. got, ok := As(err)
  30. if !ok {
  31. t.Errorf("As() return false, want true")
  32. }
  33. if got != verr {
  34. t.Errorf("As() returned error %v, want %v", got, verr)
  35. }
  36. }
  37. func TestWrap(t *testing.T) {
  38. wrapped := errors.New("wrapped")
  39. err := Wrap(wrapped)
  40. if err.Error() != "wrapped" {
  41. t.Errorf(`Wrap(wrapped).Error() = %q, want %q`, err.Error(), "wrapped")
  42. }
  43. if errors.Unwrap(err) != wrapped {
  44. t.Errorf("Unwrap = %q, want %q", errors.Unwrap(err), wrapped)
  45. }
  46. }
  47. func TestWrapWithMessage(t *testing.T) {
  48. wrapped := errors.New("wrapped")
  49. err := WrapWithMessage(wrapped, "safe")
  50. if err.Error() != "safe" {
  51. t.Errorf(`WrapWithMessage(wrapped, "safe").Error() = %q, want %q`, err.Error(), "safe")
  52. }
  53. if errors.Unwrap(err) != wrapped {
  54. t.Errorf("Unwrap = %q, want %q", errors.Unwrap(err), wrapped)
  55. }
  56. }