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  }