Skip to content

Commit

Permalink
Merge pull request #687 from reviewdog/go-err-wrap
Browse files Browse the repository at this point in the history
wrap errors with %w directive
  • Loading branch information
haya14busa committed Jul 25, 2020
2 parents a6759cd + a409f83 commit 991c983
Show file tree
Hide file tree
Showing 15 changed files with 38 additions and 38 deletions.
2 changes: 1 addition & 1 deletion cmd/reviewdog/doghouse.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ func postResultSet(ctx context.Context, resultSet *reviewdog.ResultMap,
}
res, err := cli.Check(ctx, req)
if err != nil {
return fmt.Errorf("post failed for %s: %v", name, err)
return fmt.Errorf("post failed for %s: %w", name, err)
}
if res.ReportURL != "" {
conclusion := ""
Expand Down
10 changes: 5 additions & 5 deletions cmd/reviewdog/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -503,7 +503,7 @@ func githubBaseURL() (*url.URL, error) {
}
u, err := url.Parse(baseURL)
if err != nil {
return nil, fmt.Errorf("GitHub base URL is invalid: %v, %v", baseURL, err)
return nil, fmt.Errorf("GitHub base URL is invalid: %v, %w", baseURL, err)
}
return u, nil
}
Expand Down Expand Up @@ -611,7 +611,7 @@ func gitlabBaseURL() (*url.URL, error) {

u, err := url.Parse(baseURL)
if err != nil {
return nil, fmt.Errorf("GitLab base URL is invalid: %v, %v", baseURL, err)
return nil, fmt.Errorf("GitLab base URL is invalid: %v, %w", baseURL, err)
}
return u, nil
}
Expand All @@ -638,11 +638,11 @@ func (ss *strslice) Set(value string) error {
func projectConfig(path string) (*project.Config, error) {
b, err := readConf(path)
if err != nil {
return nil, fmt.Errorf("fail to open config: %v", err)
return nil, fmt.Errorf("fail to open config: %w", err)
}
conf, err := project.Parse(b)
if err != nil {
return nil, fmt.Errorf("config is invalid: %v", err)
return nil, fmt.Errorf("config is invalid: %w", err)
}
return conf, nil
}
Expand Down Expand Up @@ -671,7 +671,7 @@ func readConf(conf string) ([]byte, error) {
func newParserFromOpt(opt *option) (reviewdog.Parser, error) {
p, err := reviewdog.NewParser(&reviewdog.ParserOpt{FormatName: opt.f, Errorformat: opt.efms})
if err != nil {
return nil, fmt.Errorf("fail to create parser. use either -f or -efm: %v", err)
return nil, fmt.Errorf("fail to create parser. use either -f or -efm: %w", err)
}
return p, err
}
Expand Down
6 changes: 3 additions & 3 deletions doghouse/appengine/github.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ func (g *GitHubHandler) requestAccessToken(ctx context.Context, code, state stri

req, err := http.NewRequest(http.MethodPost, u, strings.NewReader(data.Encode()))
if err != nil {
return "", fmt.Errorf("failed to create request: %v", err)
return "", fmt.Errorf("failed to create request: %w", err)
}
req = req.WithContext(ctx)
req.Header.Add("Accept", "application/json")
Expand All @@ -190,7 +190,7 @@ func (g *GitHubHandler) requestAccessToken(ctx context.Context, code, state stri

res, err := cli.Do(req)
if err != nil {
return "", fmt.Errorf("failed to request access token: %v", err)
return "", fmt.Errorf("failed to request access token: %w", err)
}
defer res.Body.Close()

Expand All @@ -200,7 +200,7 @@ func (g *GitHubHandler) requestAccessToken(ctx context.Context, code, state stri
AccessToken string `json:"access_token"`
}
if err := json.NewDecoder(bytes.NewReader(b)).Decode(&token); err != nil {
return "", fmt.Errorf("failed to decode response: %v", err)
return "", fmt.Errorf("failed to decode response: %w", err)
}

if token.AccessToken == "" {
Expand Down
4 changes: 2 additions & 2 deletions doghouse/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ func (c *DogHouseClient) Check(ctx context.Context, req *doghouse.CheckRequest)

httpResp, err := c.Client.Do(httpReq)
if err != nil {
return nil, fmt.Errorf("Check request failed: %v", err)
return nil, fmt.Errorf("Check request failed: %w", err)
}
defer httpResp.Body.Close()

Expand All @@ -79,7 +79,7 @@ func (c *DogHouseClient) Check(ctx context.Context, req *doghouse.CheckRequest)

var resp doghouse.CheckResponse
if err := json.Unmarshal(respb, &resp); err != nil {
return nil, fmt.Errorf("failed to decode response: error=%v, resp=%s", err, respb)
return nil, fmt.Errorf("failed to decode response: error=%w, resp=%s", err, respb)
}
return &resp, nil
}
10 changes: 5 additions & 5 deletions doghouse/server/doghouse.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func (ch *Checker) Check(ctx context.Context) (*doghouse.CheckResponse, error) {
var err error
filediffs, err = ch.pullRequestDiff(ctx, ch.req.PullRequest)
if err != nil {
return nil, fmt.Errorf("fail to parse diff: %v", err)
return nil, fmt.Errorf("fail to parse diff: %w", err)
}
}

Expand All @@ -70,12 +70,12 @@ func (ch *Checker) Check(ctx context.Context) (*doghouse.CheckResponse, error) {
if err, ok := err.(*github.ErrorResponse); ok && err.Response.StatusCode == http.StatusForbidden {
return &doghouse.CheckResponse{CheckedResults: filtered}, nil
}
return nil, fmt.Errorf("failed to create check: %v", err)
return nil, fmt.Errorf("failed to create check: %w", err)
}

checkRun, conclusion, err := ch.postCheck(ctx, check.GetID(), filtered)
if err != nil {
return nil, fmt.Errorf("failed to post result: %v", err)
return nil, fmt.Errorf("failed to post result: %w", err)
}
res := &doghouse.CheckResponse{
ReportURL: checkRun.GetHTMLURL(),
Expand All @@ -94,7 +94,7 @@ func (ch *Checker) postCheck(ctx context.Context, checkID int64, checks []*revie
}
if len(annotations) > 0 {
if err := ch.postAnnotations(ctx, checkID, annotations); err != nil {
return nil, "", fmt.Errorf("failed to post annotations: %v", err)
return nil, "", fmt.Errorf("failed to post annotations: %w", err)
}
}

Expand Down Expand Up @@ -276,7 +276,7 @@ func (ch *Checker) pullRequestDiff(ctx context.Context, pr int) ([]*diff.FileDif
}
filediffs, err := diff.ParseMultiFile(bytes.NewReader(d))
if err != nil {
return nil, fmt.Errorf("fail to parse diff: %v", err)
return nil, fmt.Errorf("fail to parse diff: %w", err)
}
return filediffs, nil
}
Expand Down
2 changes: 1 addition & 1 deletion doghouse/server/github.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ func NewGitHubClient(ctx context.Context, opt *NewGitHubClientOption) (*github.C

itr, err := githubAppTransport(ctx, client, opt)
if err != nil {
return nil, fmt.Errorf("failed to create gh transport: %v", err)
return nil, fmt.Errorf("failed to create gh transport: %w", err)
}

client.Transport = itr
Expand Down
4 changes: 2 additions & 2 deletions project/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ func RunAndParse(ctx context.Context, conf *Config, runners map[string]bool, def
return nil, err
}
if err := cmd.Start(); err != nil {
return nil, fmt.Errorf("fail to start command: %v", err)
return nil, fmt.Errorf("fail to start command: %w", err)
}
g.Go(func() error {
defer func() { <-semaphore }()
Expand Down Expand Up @@ -81,7 +81,7 @@ func RunAndParse(ctx context.Context, conf *Config, runners map[string]bool, def
})
}
if err := g.Wait(); err != nil {
return nil, fmt.Errorf("fail to run reviewdog: %v", err)
return nil, fmt.Errorf("fail to run reviewdog: %w", err)
}
if err := checkUnknownRunner(runners, usedRunners); err != nil {
return nil, err
Expand Down
6 changes: 3 additions & 3 deletions reviewdog.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,17 +115,17 @@ func (w *Reviewdog) runFromResult(ctx context.Context, results []*CheckResult,
func (w *Reviewdog) Run(ctx context.Context, r io.Reader) error {
results, err := w.p.Parse(r)
if err != nil {
return fmt.Errorf("parse error: %v", err)
return fmt.Errorf("parse error: %w", err)
}

d, err := w.d.Diff(ctx)
if err != nil {
return fmt.Errorf("fail to get diff: %v", err)
return fmt.Errorf("fail to get diff: %w", err)
}

filediffs, err := diff.ParseMultiFile(bytes.NewReader(d))
if err != nil {
return fmt.Errorf("fail to parse diff: %v", err)
return fmt.Errorf("fail to parse diff: %w", err)
}

return w.runFromResult(ctx, results, filediffs, w.d.Strip(), w.failOnError)
Expand Down
6 changes: 3 additions & 3 deletions service/gerrit/change_diff.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ type ChangeDiff struct {
func NewChangeDiff(cli *gerrit.Client, branch, changeID string) (*ChangeDiff, error) {
workDir, err := serviceutil.GitRelWorkdir()
if err != nil {
return nil, fmt.Errorf("ChangeDiff needs 'git' command: %v", err)
return nil, fmt.Errorf("ChangeDiff needs 'git' command: %w", err)
}
return &ChangeDiff{
cli: cli,
Expand Down Expand Up @@ -61,12 +61,12 @@ func (g *ChangeDiff) Diff(ctx context.Context) ([]byte, error) {
func (g *ChangeDiff) gitDiff(_ context.Context, baseSha, targetSha string) ([]byte, error) {
b, err := exec.Command("git", "merge-base", targetSha, baseSha).Output() // #nosec
if err != nil {
return nil, fmt.Errorf("failed to get merge-base commit: %v", err)
return nil, fmt.Errorf("failed to get merge-base commit: %w", err)
}
mergeBase := strings.Trim(string(b), "\n")
bytes, err := exec.Command("git", "diff", "--find-renames", mergeBase, baseSha).Output()
if err != nil {
return nil, fmt.Errorf("failed to run git diff: %v", err)
return nil, fmt.Errorf("failed to run git diff: %w", err)
}
return bytes, nil
}
Expand Down
2 changes: 1 addition & 1 deletion service/gerrit/change_review.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ type ChangeReviewCommenter struct {
func NewChangeReviewCommenter(cli *gerrit.Client, changeID, revisionID string) (*ChangeReviewCommenter, error) {
workDir, err := serviceutil.GitRelWorkdir()
if err != nil {
return nil, fmt.Errorf("ChangeReviewCommenter needs 'git' command: %v", err)
return nil, fmt.Errorf("ChangeReviewCommenter needs 'git' command: %w", err)
}

return &ChangeReviewCommenter{
Expand Down
2 changes: 1 addition & 1 deletion service/github/github.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ type GitHubPullRequest struct {
func NewGitHubPullRequest(cli *github.Client, owner, repo string, pr int, sha string) (*GitHubPullRequest, error) {
workDir, err := serviceutil.GitRelWorkdir()
if err != nil {
return nil, fmt.Errorf("GitHubPullRequest needs 'git' command: %v", err)
return nil, fmt.Errorf("GitHubPullRequest needs 'git' command: %w", err)
}
return &GitHubPullRequest{
cli: cli,
Expand Down
4 changes: 2 additions & 2 deletions service/gitlab/gitlab_mr_commit.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ type GitLabMergeRequestCommitCommenter struct {
func NewGitLabMergeRequestCommitCommenter(cli *gitlab.Client, owner, repo string, pr int, sha string) (*GitLabMergeRequestCommitCommenter, error) {
workDir, err := serviceutil.GitRelWorkdir()
if err != nil {
return nil, fmt.Errorf("GitLabMergeRequestCommitCommenter needs 'git' command: %v", err)
return nil, fmt.Errorf("GitLabMergeRequestCommitCommenter needs 'git' command: %w", err)
}
return &GitLabMergeRequestCommitCommenter{
cli: cli,
Expand Down Expand Up @@ -109,7 +109,7 @@ func (g *GitLabMergeRequestCommitCommenter) getLastCommitsID(path string, line i
lineFormat := fmt.Sprintf("%d,%d", line, line)
s, err := exec.Command("git", "blame", "-l", "-L", lineFormat, path).Output()
if err != nil {
return "", fmt.Errorf("failed to get commitID: %v", err)
return "", fmt.Errorf("failed to get commitID: %w", err)
}
commitID := strings.Split(string(s), " ")[0]
return commitID, nil
Expand Down
6 changes: 3 additions & 3 deletions service/gitlab/gitlab_mr_diff.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ type GitLabMergeRequestDiff struct {
func NewGitLabMergeRequestDiff(cli *gitlab.Client, owner, repo string, pr int, sha string) (*GitLabMergeRequestDiff, error) {
workDir, err := serviceutil.GitRelWorkdir()
if err != nil {
return nil, fmt.Errorf("GitLabMergeRequestCommitCommenter needs 'git' command: %v", err)
return nil, fmt.Errorf("GitLabMergeRequestCommitCommenter needs 'git' command: %w", err)
}
return &GitLabMergeRequestDiff{
cli: cli,
Expand Down Expand Up @@ -61,12 +61,12 @@ func (g *GitLabMergeRequestDiff) Diff(ctx context.Context) ([]byte, error) {
func (g *GitLabMergeRequestDiff) gitDiff(_ context.Context, baseSha, targetSha string) ([]byte, error) {
b, err := exec.Command("git", "merge-base", targetSha, baseSha).Output()
if err != nil {
return nil, fmt.Errorf("failed to get merge-base commit: %v", err)
return nil, fmt.Errorf("failed to get merge-base commit: %w", err)
}
mergeBase := strings.Trim(string(b), "\n")
bytes, err := exec.Command("git", "diff", "--find-renames", mergeBase, baseSha).Output()
if err != nil {
return nil, fmt.Errorf("failed to run git diff: %v", err)
return nil, fmt.Errorf("failed to run git diff: %w", err)
}
return bytes, nil
}
Expand Down
10 changes: 5 additions & 5 deletions service/gitlab/gitlab_mr_discussion.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ type GitLabMergeRequestDiscussionCommenter struct {
func NewGitLabMergeRequestDiscussionCommenter(cli *gitlab.Client, owner, repo string, pr int, sha string) (*GitLabMergeRequestDiscussionCommenter, error) {
workDir, err := serviceutil.GitRelWorkdir()
if err != nil {
return nil, fmt.Errorf("GitLabMergeRequestDiscussionCommenter needs 'git' command: %v", err)
return nil, fmt.Errorf("GitLabMergeRequestDiscussionCommenter needs 'git' command: %w", err)
}
return &GitLabMergeRequestDiscussionCommenter{
cli: cli,
Expand Down Expand Up @@ -65,7 +65,7 @@ func (g *GitLabMergeRequestDiscussionCommenter) Flush(ctx context.Context) error
defer g.muComments.Unlock()
postedcs, err := g.createPostedComments()
if err != nil {
return fmt.Errorf("failed to create posted comments: %v", err)
return fmt.Errorf("failed to create posted comments: %w", err)
}
return g.postCommentsForEach(ctx, postedcs)
}
Expand All @@ -74,7 +74,7 @@ func (g *GitLabMergeRequestDiscussionCommenter) createPostedComments() (commentu
postedcs := make(commentutil.PostedComments)
discussions, err := listAllMergeRequestDiscussion(g.cli, g.projects, g.pr, &gitlab.ListMergeRequestDiscussionsOptions{PerPage: 100})
if err != nil {
return nil, fmt.Errorf("failed to list all merge request discussions: %v", err)
return nil, fmt.Errorf("failed to list all merge request discussions: %w", err)
}
for _, d := range discussions {
for _, note := range d.Notes {
Expand All @@ -91,7 +91,7 @@ func (g *GitLabMergeRequestDiscussionCommenter) createPostedComments() (commentu
func (g *GitLabMergeRequestDiscussionCommenter) postCommentsForEach(ctx context.Context, postedcs commentutil.PostedComments) error {
mr, _, err := g.cli.MergeRequests.GetMergeRequest(g.projects, g.pr, nil, gitlab.WithContext(ctx))
if err != nil {
return fmt.Errorf("failed to get merge request: %v", err)
return fmt.Errorf("failed to get merge request: %w", err)
}
targetBranch, _, err := g.cli.Branches.GetBranch(mr.TargetProjectID, mr.TargetBranch, nil)
if err != nil {
Expand Down Expand Up @@ -125,7 +125,7 @@ func (g *GitLabMergeRequestDiscussionCommenter) postCommentsForEach(ctx context.
}
_, _, err := g.cli.Discussions.CreateMergeRequestDiscussion(g.projects, g.pr, discussion)
if err != nil {
return fmt.Errorf("failed to create merge request discussion: %v", err)
return fmt.Errorf("failed to create merge request discussion: %w", err)
}
return nil
})
Expand Down
2 changes: 1 addition & 1 deletion service/serviceutil/serviceutil.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
func GitRelWorkdir() (string, error) {
b, err := exec.Command("git", "rev-parse", "--show-prefix").Output()
if err != nil {
return "", fmt.Errorf("failed to run 'git rev-parse --show-prefix': %v", err)
return "", fmt.Errorf("failed to run 'git rev-parse --show-prefix': %w", err)
}
return strings.Trim(string(b), "\n"), nil
}

0 comments on commit 991c983

Please sign in to comment.