Skip to content

Commit 0e4acef

Browse files
committed
Propagate closest-tag lookup errors
1 parent c8673dd commit 0e4acef

3 files changed

Lines changed: 22 additions & 5 deletions

File tree

internal/gitsemver/gitsemver.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ func (vs *GitSemVer) GetTag(repo string) (tag string, match bool, err error) {
141141
}
142142
}
143143
var closeToHEAD string
144-
if closeToHEAD, _ = vs.Git.GetClosestTag(repo, "HEAD"); closeToHEAD != "" {
144+
if closeToHEAD, err = vs.Git.GetClosestTag(repo, "HEAD"); err == nil && closeToHEAD != "" {
145145
var found GitTag
146146
if found, err = vs.getTreeHash(repo, closeToHEAD); err == nil {
147147
for _, gt := range vs.tags {

internal/gitsemver/gitsemver_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package gitsemver_test
22

33
import (
44
"bytes"
5+
"errors"
56
"testing"
67

78
gitsemver "github.com/linkdata/gitsemver/internal/gitsemver"
@@ -129,6 +130,18 @@ func Test_VersionStringer_GetTag(t *testing.T) {
129130
isEqual(t, err, nil)
130131
}
131132

133+
func Test_VersionStringer_GetTag_PropagatesClosestTagError(t *testing.T) {
134+
env := MockEnvironment{}
135+
expectedErr := errors.New("closest tag lookup failed")
136+
git := &MockGitter{closestTagErr: expectedErr}
137+
vs := gitsemver.GitSemVer{Git: git, Env: env}
138+
139+
_, _, err := vs.GetTag(".")
140+
if !errors.Is(err, expectedErr) {
141+
t.Fatalf("expected closest tag error, got %v", err)
142+
}
143+
}
144+
132145
func Test_VersionStringer_GetBranch(t *testing.T) {
133146
env := MockEnvironment{}
134147
git := &MockGitter{}

internal/gitsemver/mockgitter_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@ var mockHistory = []gitsemver.GitTag{
2929
}
3030

3131
type MockGitter struct {
32-
branch string
33-
treehash string
34-
TopTag string
35-
dirty bool
32+
branch string
33+
treehash string
34+
TopTag string
35+
dirty bool
36+
closestTagErr error
3637
}
3738

3839
func (mg *MockGitter) Exec(args ...string) (output []byte, err error) {
@@ -83,6 +84,9 @@ func (mg *MockGitter) GetHashes(repo, tag string) (commit, tree string, err erro
8384
}
8485

8586
func (mg *MockGitter) GetClosestTag(repo, from string) (tag string, err error) {
87+
if mg.closestTagErr != nil {
88+
return "", mg.closestTagErr
89+
}
8690
if repo == "." {
8791
if from == "HEAD" {
8892
from = mg.treehash

0 commit comments

Comments
 (0)