github.com/mithrandie/csvq@v1.18.1/lib/file/error_test.go (about) 1 package file 2 3 import ( 4 "errors" 5 "reflect" 6 "testing" 7 8 "github.com/mithrandie/go-file/v2" 9 ) 10 11 var parseErrorTests = []struct { 12 Error error 13 ExpectError error 14 Message string 15 }{ 16 { 17 Error: file.NewIOError("io error"), 18 ExpectError: NewIOError("io error"), 19 Message: "io error", 20 }, 21 { 22 Error: file.NewLockError("lock error"), 23 ExpectError: NewLockError("lock error"), 24 Message: "lock error", 25 }, 26 { 27 Error: file.NewTimeoutError("filepath"), 28 ExpectError: &TimeoutError{message: "file filepath: lock waiting time exceeded"}, 29 Message: "file filepath: lock waiting time exceeded", 30 }, 31 { 32 Error: NewTimeoutError("filepath"), 33 ExpectError: &TimeoutError{message: "file filepath: lock waiting time exceeded"}, 34 Message: "file filepath: lock waiting time exceeded", 35 }, 36 } 37 38 func TestParseError(t *testing.T) { 39 for _, v := range parseErrorTests { 40 e := ParseError(v.Error) 41 if !reflect.DeepEqual(e, v.ExpectError) { 42 t.Errorf("result = %#v, want %#v for %#v", e, v.ExpectError, v.Error) 43 } 44 if e.Error() != v.Message { 45 t.Errorf("message = %q, want %q for %#v", e.Error(), v.Message, v.Error) 46 } 47 } 48 } 49 50 func TestForcedUnlockError_Error(t *testing.T) { 51 errs := []error{ 52 errors.New("err1"), 53 errors.New("err2"), 54 } 55 56 err := NewForcedUnlockError(errs) 57 expect := "err1\n err2" 58 if err == nil { 59 t.Fatalf("no error, want error %q", expect) 60 } 61 if err.Error() != expect { 62 t.Fatalf("err = %q, want error %q", err.Error(), expect) 63 } 64 65 err = NewForcedUnlockError(nil) 66 if err != nil { 67 t.Fatalf("error = %q, want no error", err.Error()) 68 } 69 } 70 71 func TestCompositeError_Error(t *testing.T) { 72 err1 := NewForcedUnlockError([]error{ 73 errors.New("ferr1"), 74 errors.New("ferr2"), 75 }) 76 err2 := errors.New("err2") 77 78 err := NewCompositeError(err1, err2) 79 expect := "ferr1\n ferr2\n err2" 80 if err == nil { 81 t.Fatalf("no error, want error %q", expect) 82 } 83 if err.Error() != expect { 84 t.Fatalf("err = %q, want error %q", err.Error(), expect) 85 } 86 87 err = NewCompositeError(err1, nil) 88 expect = "ferr1\n ferr2" 89 if err == nil { 90 t.Fatalf("no error, want error %q", expect) 91 } 92 if err.Error() != expect { 93 t.Fatalf("err = %q, want error %q", err.Error(), expect) 94 } 95 96 err = NewCompositeError(nil, err2) 97 expect = "err2" 98 if err == nil { 99 t.Fatalf("no error, want error %q", expect) 100 } 101 if err.Error() != expect { 102 t.Fatalf("err = %q, want error %q", err.Error(), expect) 103 } 104 105 err = NewCompositeError(nil, nil) 106 if err != nil { 107 t.Fatalf("error = %q, want no error", err.Error()) 108 } 109 }