Skip to content

Commit 47ff83d

Browse files
committed
error test
1 parent ea6d310 commit 47ff83d

File tree

3 files changed

+17
-26
lines changed

3 files changed

+17
-26
lines changed

pkg/errgitexec.go

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package gitsemver
22

33
import (
4-
"strconv"
4+
"fmt"
5+
"strings"
56
)
67

78
type errGitExec struct {
@@ -23,21 +24,15 @@ func NewErrGitExec(git string, args []string, err error, stderr string) error {
2324
}
2425

2526
func (err *errGitExec) Error() string {
26-
var b []byte
27-
if err.git != "" {
28-
b = append(b, err.git...)
29-
for _, arg := range err.args {
30-
b = append(b, ' ')
31-
b = strconv.AppendQuote(b, arg)
32-
}
33-
b = append(b, ": "...)
27+
var sb strings.Builder
28+
fmt.Fprintf(&sb, "%q:", strings.Join(append([]string{err.git}, err.args...), " "))
29+
if err.err != nil {
30+
fmt.Fprintf(&sb, " %v", err.err)
3431
}
3532
if len(err.stderr) > 0 {
36-
b = append(b, err.stderr...)
37-
} else if err.err != nil {
38-
b = append(b, err.err.Error()...)
33+
fmt.Fprintf(&sb, " %q", err.stderr)
3934
}
40-
return string(b)
35+
return sb.String()
4136
}
4237

4338
func (err *errGitExec) Is(other error) bool {

pkg/errgitexec_test.go

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,13 @@ func Test_errGitExec_Error(t *testing.T) {
1515
stderr string
1616
want string
1717
}{
18-
{
19-
name: "nil",
20-
git: "",
21-
args: nil,
22-
err: nil,
23-
stderr: "",
24-
want: "",
25-
},
2618
{
2719
name: "os.ErrNotExist",
2820
git: "_nope_",
29-
args: nil,
21+
args: []string{"a"},
3022
err: os.ErrNotExist,
31-
stderr: "",
32-
want: "_nope_: " + os.ErrNotExist.Error(),
23+
stderr: "meh",
24+
want: "\"_nope_ a\": " + os.ErrNotExist.Error() + " \"meh\"",
3325
},
3426
}
3527
for _, tt := range tests {

pkg/gitter.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,14 @@ func (dg DefaultGitter) Exec(args ...string) (output []byte, err error) {
6969
MaybeSync(dg.DebugOut)
7070
defer func(w io.Writer) {
7171
result := "OK"
72+
for errors.Unwrap(err) != nil {
73+
err = errors.Unwrap(err)
74+
}
7275
if err != nil {
7376
result = err.Error()
74-
} else if serr.Len() > 0 {
75-
result = serr.String()
77+
}
78+
if serr.Len() > 0 {
79+
result += fmt.Sprintf(" %q", serr.String())
7680
}
7781
fmt.Fprintf(w, " (%v+%v) %v\n", sout.Len(), serr.Len(), result)
7882
MaybeSync(w)

0 commit comments

Comments
 (0)