Skip to content

Commit

Permalink
wrap csv error
Browse files Browse the repository at this point in the history
  • Loading branch information
kenanfarukcakir committed Apr 18, 2023
1 parent 27a7d10 commit 2646607
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 11 deletions.
22 changes: 11 additions & 11 deletions core/scenario/testdata/csv.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,24 +42,18 @@ func ReadCsv(conf types.CsvConf) ([]map[string]interface{}, error) {
var reader io.Reader

var pUrl *url.URL
var csvReqError RemoteCsvError
if pUrl, err = url.ParseRequestURI(conf.Path); err == nil && pUrl.IsAbs() { // url
req, err := http.NewRequest(http.MethodGet, conf.Path, nil)
if err != nil {
csvReqError.msg = "can not create request"
csvReqError.wrappedErr = err
return nil, csvReqError
return nil, wrapAsCsvError("can not create request", err)
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
csvReqError.msg = "can not send request"
csvReqError.wrappedErr = err
return nil, csvReqError
return nil, wrapAsCsvError("can not get response", err)
}

if !(resp.StatusCode >= 200 && resp.StatusCode <= 299) {
csvReqError.msg = fmt.Sprintf("request to remote url failed: %d", resp.StatusCode)
return nil, csvReqError
return nil, wrapAsCsvError(fmt.Sprintf("request to remote url failed: %d", resp.StatusCode), nil)
}
reader = resp.Body
defer resp.Body.Close()
Expand All @@ -71,8 +65,7 @@ func ReadCsv(conf types.CsvConf) ([]map[string]interface{}, error) {
reader = f
defer f.Close()
} else {
csvReqError.msg = fmt.Sprintf("can not parse path: %s", conf.Path)
return nil, csvReqError
return nil, wrapAsCsvError(fmt.Sprintf("can not parse path: %s", conf.Path), err)
}

// read csv values using csv.Reader
Expand Down Expand Up @@ -152,3 +145,10 @@ func emptyLine(row []string) bool {
}
return true
}

func wrapAsCsvError(msg string, err error) RemoteCsvError {
var csvReqError RemoteCsvError
csvReqError.msg = msg
csvReqError.wrappedErr = err
return csvReqError
}
19 changes: 19 additions & 0 deletions core/scenario/testdata/csv_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,25 @@ func TestReadCsv_RemoteErr(t *testing.T) {
if !errors.As(err, &remoteCsvErr) {
t.Errorf("Expected: %v, Found: %v", remoteCsvErr, err)
}
if remoteCsvErr.Error() != "can not get response" {
t.Errorf("Expected: %v, Found: %v", "can not get response", remoteCsvErr.msg)
}
if remoteCsvErr.Unwrap() == nil {
t.Errorf("Expected: %v, Found: %v", "not nil", remoteCsvErr.Unwrap())
}
}

func TestWrapAsRemoteCsvError(t *testing.T) {
msg := "xxyy"
csvErr := wrapAsCsvError(msg, fmt.Errorf("error"))

var remoteCsvErr RemoteCsvError
if !errors.As(csvErr, &remoteCsvErr) {
t.Errorf("Expected: %v, Found: %v", remoteCsvErr, csvErr)
}
if remoteCsvErr.Error() != msg {
t.Errorf("Expected: %v, Found: %v", msg, remoteCsvErr.msg)
}
}

func TestReadCsv(t *testing.T) {
Expand Down

0 comments on commit 2646607

Please sign in to comment.