Skip to content

Commit a7e3436

Browse files
committed
more debug logging
1 parent e546dc3 commit a7e3436

5 files changed

Lines changed: 58 additions & 33 deletions

File tree

main.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"errors"
55
"flag"
66
"fmt"
7+
"io"
78
"os"
89
"path"
910
"syscall"
@@ -42,11 +43,13 @@ func mainfn() int {
4243
repoDir = "."
4344
}
4445

45-
vs, err := gitsemver.New(*flagGit)
46+
var debugOut io.Writer
47+
if *flagDebug {
48+
debugOut = os.Stderr
49+
}
50+
51+
vs, err := gitsemver.New(*flagGit, debugOut)
4652
if err == nil {
47-
if *flagDebug {
48-
vs.DebugOut = os.Stderr
49-
}
5053
var createTag string
5154
if repoDir, err = vs.Git.CheckGitRepo(repoDir); err == nil {
5255
if !*flagNoFetch {

pkg/gitsemver.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@ type GitSemVer struct {
1818

1919
// New returns a GitSemVer ready to examine
2020
// the git repositories using the given Git binary.
21-
func New(gitBin string) (vs *GitSemVer, err error) {
21+
func New(gitBin string, debugOut io.Writer) (vs *GitSemVer, err error) {
2222
var git Gitter
23-
if git, err = NewDefaultGitter(gitBin); err == nil {
23+
if git, err = NewDefaultGitter(gitBin, debugOut); err == nil {
2424
vs = &GitSemVer{
25-
Git: git,
26-
Env: OsEnvironment{},
25+
Git: git,
26+
Env: OsEnvironment{},
27+
DebugOut: debugOut,
2728
}
2829
}
2930
return

pkg/gitsemver_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
)
99

1010
func Test_NewVersionStringer_SucceedsNormally(t *testing.T) {
11-
vs, err := gitsemver.New("git")
11+
vs, err := gitsemver.New("git", nil)
1212
if err != nil {
1313
t.Error(err)
1414
}
@@ -18,7 +18,7 @@ func Test_NewVersionStringer_SucceedsNormally(t *testing.T) {
1818
}
1919

2020
func Test_NewVersionStringer_FailsWithBadBinary(t *testing.T) {
21-
vs, err := gitsemver.New("./versionstringer.go")
21+
vs, err := gitsemver.New("./versionstringer.go", nil)
2222
if err == nil {
2323
t.Error("no error")
2424
}
@@ -307,7 +307,7 @@ func Test_VersionStringer_GetVersionDetachedHEAD(t *testing.T) {
307307
}
308308

309309
func TestGitSemVer_Debug(t *testing.T) {
310-
vs, err := gitsemver.New("git")
310+
vs, err := gitsemver.New("git", nil)
311311
if err != nil {
312312
t.Error(err)
313313
}

pkg/gitter.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package gitsemver
33
import (
44
"bytes"
55
"errors"
6+
"fmt"
7+
"io"
68
"os"
79
"os/exec"
810
"path"
@@ -43,27 +45,37 @@ type Gitter interface {
4345
CleanStatus(repo string) (yes bool, err error)
4446
}
4547

46-
type DefaultGitter string
48+
type DefaultGitter struct {
49+
Git string
50+
DebugOut io.Writer
51+
}
4752

4853
func (dg DefaultGitter) Exec(args ...string) (output []byte, err error) {
4954
var sout, serr bytes.Buffer
50-
cmd := exec.Command(string(dg), args...) /* #nosec G204 */
55+
cmd := exec.Command(dg.Git, args...) /* #nosec G204 */
5156
cmd.Stdout = &sout
5257
cmd.Stderr = &serr
5358
err = cmd.Run()
5459
output = bytes.TrimSpace(sout.Bytes())
5560
stderr := bytes.TrimSpace(serr.Bytes())
5661
if err != nil {
57-
err = NewErrGitExec(string(dg), args, err, string(stderr))
62+
err = NewErrGitExec(dg.Git, args, err, string(stderr))
5863
} else {
5964
output = append(output, stderr...)
6065
}
66+
if dg.DebugOut != nil {
67+
result := "OK"
68+
if err != nil {
69+
result = err.Error()
70+
}
71+
fmt.Fprintf(dg.DebugOut, "%q => (%v+%v) %v\n", strings.Join(cmd.Args, " "), len(output), len(stderr), result)
72+
}
6173
return
6274
}
6375

64-
func NewDefaultGitter(gitBin string) (gitter Gitter, err error) {
76+
func NewDefaultGitter(gitBin string, debugOut io.Writer) (gitter Gitter, err error) {
6577
if gitBin, err = exec.LookPath(gitBin); err == nil {
66-
gitter = DefaultGitter(gitBin)
78+
gitter = DefaultGitter{Git: gitBin, DebugOut: debugOut}
6779
}
6880
return
6981
}
@@ -214,7 +226,7 @@ func (dg DefaultGitter) GetBuild(repo string) (buildnum string, err error) {
214226
}
215227

216228
func (dg DefaultGitter) FetchTags(repo string) (err error) {
217-
err = exec.Command(string(dg), "-C", repo, "fetch", "--tags").Run() /* #nosec G204 */
229+
err = exec.Command(dg.Git, "-C", repo, "fetch", "--tags").Run() /* #nosec G204 */
218230
return
219231
}
220232

pkg/gitter_test.go

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package gitsemver_test
22

33
import (
4+
"bytes"
45
"os"
56
"slices"
67
"testing"
@@ -9,7 +10,7 @@ import (
910
)
1011

1112
func Test_NewDefaultGitter_SucceedsNormally(t *testing.T) {
12-
dg, err := gitsemver.NewDefaultGitter("git")
13+
dg, err := gitsemver.NewDefaultGitter("git", nil)
1314
if err != nil {
1415
t.Error(err)
1516
}
@@ -19,7 +20,7 @@ func Test_NewDefaultGitter_SucceedsNormally(t *testing.T) {
1920
}
2021

2122
func Test_CheckGitRepo_SucceedsForCurrent(t *testing.T) {
22-
dg, err := gitsemver.NewDefaultGitter("git")
23+
dg, err := gitsemver.NewDefaultGitter("git", nil)
2324
if err != nil {
2425
t.Error(err)
2526
}
@@ -33,7 +34,7 @@ func Test_CheckGitRepo_SucceedsForCurrent(t *testing.T) {
3334
}
3435

3536
func Test_CheckGitRepo_SucceedsForSubdir(t *testing.T) {
36-
dg, err := gitsemver.NewDefaultGitter("git")
37+
dg, err := gitsemver.NewDefaultGitter("git", nil)
3738
if err != nil {
3839
t.Error(err)
3940
}
@@ -47,7 +48,7 @@ func Test_CheckGitRepo_SucceedsForSubdir(t *testing.T) {
4748
}
4849

4950
func Test_CheckGitRepo_FailsForRoot(t *testing.T) {
50-
dg, err := gitsemver.NewDefaultGitter("git")
51+
dg, err := gitsemver.NewDefaultGitter("git", nil)
5152
if err != nil {
5253
t.Error(err)
5354
}
@@ -66,7 +67,7 @@ func Test_CheckGitRepo_IgnoresFileNamedGit(t *testing.T) {
6667
if f, err := os.Create(fileNamedGit); err == nil {
6768
defer f.Close()
6869
defer os.Remove(fileNamedGit)
69-
dg, err := gitsemver.NewDefaultGitter("git")
70+
dg, err := gitsemver.NewDefaultGitter("git", nil)
7071
if err != nil {
7172
t.Error(err)
7273
}
@@ -84,7 +85,7 @@ func Test_CheckGitRepo_IgnoresFileNamedGit(t *testing.T) {
8485
}
8586

8687
func Test_DefaultGitter_GetBranch(t *testing.T) {
87-
dg, err := gitsemver.NewDefaultGitter("git")
88+
dg, err := gitsemver.NewDefaultGitter("git", nil)
8889
if err != nil {
8990
t.Error(err)
9091
}
@@ -106,7 +107,7 @@ func Test_LastName(t *testing.T) {
106107
}
107108

108109
func Test_DefaultGitter_GetTags(t *testing.T) {
109-
dg, err := gitsemver.NewDefaultGitter("git")
110+
dg, err := gitsemver.NewDefaultGitter("git", nil)
110111
if err != nil {
111112
t.Error(err)
112113
}
@@ -123,7 +124,7 @@ func Test_DefaultGitter_GetTags(t *testing.T) {
123124
}
124125

125126
func Test_DefaultGitter_GetCurrentTreeHash(t *testing.T) {
126-
dg, err := gitsemver.NewDefaultGitter("git")
127+
dg, err := gitsemver.NewDefaultGitter("git", nil)
127128
if err != nil {
128129
t.Error(err)
129130
}
@@ -140,7 +141,7 @@ func Test_DefaultGitter_GetCurrentTreeHash(t *testing.T) {
140141
}
141142

142143
func Test_DefaultGitter_GetTreeHash(t *testing.T) {
143-
dg, err := gitsemver.NewDefaultGitter("git")
144+
dg, err := gitsemver.NewDefaultGitter("git", nil)
144145
if err != nil {
145146
t.Error(err)
146147
}
@@ -153,7 +154,7 @@ func Test_DefaultGitter_GetTreeHash(t *testing.T) {
153154
}
154155

155156
func Test_DefaultGitter_GetClosestTag(t *testing.T) {
156-
dg, err := gitsemver.NewDefaultGitter("git")
157+
dg, err := gitsemver.NewDefaultGitter("git", nil)
157158
if err != nil {
158159
t.Error(err)
159160
}
@@ -177,7 +178,7 @@ func Test_DefaultGitter_GetClosestTag(t *testing.T) {
177178
}
178179

179180
func Test_DefaultGitter_GetBranchFromTag(t *testing.T) {
180-
dg, err := gitsemver.NewDefaultGitter("git")
181+
dg, err := gitsemver.NewDefaultGitter("git", nil)
181182
if err != nil {
182183
t.Error(err)
183184
}
@@ -190,7 +191,7 @@ func Test_DefaultGitter_GetBranchFromTag(t *testing.T) {
190191
}
191192

192193
func Test_DefaultGitter_GetBuild(t *testing.T) {
193-
dg, err := gitsemver.NewDefaultGitter("git")
194+
dg, err := gitsemver.NewDefaultGitter("git", nil)
194195
if err != nil {
195196
t.Error(err)
196197
}
@@ -203,15 +204,15 @@ func Test_DefaultGitter_GetBuild(t *testing.T) {
203204
}
204205

205206
func Test_DefaultGitter_FetchTags(t *testing.T) {
206-
dg, err := gitsemver.NewDefaultGitter("git")
207+
dg, err := gitsemver.NewDefaultGitter("git", nil)
207208
if err != nil {
208209
t.Error(err)
209210
}
210211
dg.FetchTags(".")
211212
}
212213

213214
func Test_DefaultGitter_CreateDeleteTag(t *testing.T) {
214-
dg, err := gitsemver.NewDefaultGitter("git")
215+
dg, err := gitsemver.NewDefaultGitter("git", nil)
215216
if err != nil {
216217
t.Error(err)
217218
}
@@ -226,7 +227,8 @@ func Test_DefaultGitter_CreateDeleteTag(t *testing.T) {
226227
}
227228

228229
func Test_DefaultGitter_PushTag(t *testing.T) {
229-
dg, err := gitsemver.NewDefaultGitter("git")
230+
var buf bytes.Buffer
231+
dg, err := gitsemver.NewDefaultGitter("git", &buf)
230232
if err != nil {
231233
t.Error(err)
232234
}
@@ -239,11 +241,15 @@ func Test_DefaultGitter_PushTag(t *testing.T) {
239241
t.Error("no error")
240242
} else {
241243
t.Log(err)
244+
if buf.Len() == 0 {
245+
t.Error("no log?")
246+
}
242247
}
243248
}
244249

245250
func Test_DefaultGitter_CleanStatus(t *testing.T) {
246-
dg, err := gitsemver.NewDefaultGitter("git")
251+
var buf bytes.Buffer
252+
dg, err := gitsemver.NewDefaultGitter("git", &buf)
247253
if err != nil {
248254
t.Error(err)
249255
}
@@ -256,4 +262,7 @@ func Test_DefaultGitter_CleanStatus(t *testing.T) {
256262
} else {
257263
t.Log("git status reports clean")
258264
}
265+
if buf.Len() == 0 {
266+
t.Error("no log?")
267+
}
259268
}

0 commit comments

Comments
 (0)