Skip to content

Commit bf01801

Browse files
committed
refactor: Rename Git.Remote to Git.RemoteExists
Moves the existence check into the Git helper and return a true/false, rather than leaving it up to the caller. This should ease future work.
1 parent f4bb7a2 commit bf01801

File tree

7 files changed

+26
-21
lines changed

7 files changed

+26
-21
lines changed

internal/git.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ type GitManager interface {
2525
Clone(gitURL, origin, cloneDir string) error
2626
Worktree(cloneDir, version, dstDir string) error
2727
Update(origin, cloneDir string) error
28-
Remote(cloneDir string) (string, error)
28+
RemoteExists(cloneDir string, remote string) (bool, error)
2929
}

internal/git/git.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ package git
2525

2626
import (
2727
"log/slog"
28+
"strings"
2829

2930
"github.com/avfs/avfs"
3031

@@ -118,7 +119,11 @@ func (g *Git) Worktree(
118119
return err
119120
}
120121

121-
// Return the name of the repo remote.
122-
func (g *Git) Remote(cloneDir string) (string, error) {
123-
return g.execManager.RunCmdInDir("git", []string{"remote"}, cloneDir)
122+
// Check if the remote exists in the given cloneDir.
123+
func (g *Git) RemoteExists(cloneDir string, remote string) (bool, error) {
124+
retVal, err := g.execManager.RunCmdInDir("git", []string{"remote"}, cloneDir)
125+
if err != nil {
126+
return false, err
127+
}
128+
return strings.Contains(retVal, remote), nil
124129
}

internal/git/git_public_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ func (suite *GitManagerPublicTestSuite) TestUpdateError() {
162162

163163
func (suite *GitManagerPublicTestSuite) TestRemoteOk() {
164164
suite.mockExec.EXPECT().RunCmdInDir("git", []string{"remote"}, suite.cloneDir).Return("", nil)
165-
_, err := suite.gm.Remote(suite.cloneDir)
165+
_, err := suite.gm.RemoteExists(suite.cloneDir, suite.origin)
166166
assert.NoError(suite.T(), err)
167167
}
168168

@@ -171,7 +171,7 @@ func (suite *GitManagerPublicTestSuite) TestRemoteError() {
171171
suite.mockExec.EXPECT().
172172
RunCmdInDir("git", []string{"remote"}, suite.cloneDir).
173173
Return("", errors)
174-
_, err := suite.gm.Remote(suite.cloneDir)
174+
_, err := suite.gm.RemoteExists(suite.cloneDir, suite.origin)
175175
assert.Error(suite.T(), err)
176176
}
177177

internal/mocks/git.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@ type GitManager interface {
2525
Clone(gitURL, origin, cloneDir string) error
2626
Worktree(cloneDir, version, dstDir string) error
2727
Update(origin, cloneDir string) error
28-
Remote(cloneDir string) (string, error)
28+
RemoteExists(cloneDir string, remote string) (bool, error)
2929
}

internal/mocks/git/git_mock.go

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/repository/repository.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ func (r *Repository) Clone(
5858
cloneDir string,
5959
) (string, error) {
6060
targetDir := r.appFs.Join(cloneDir, replacer.Replace(c.Git))
61-
remote, err := r.gitManager.Remote(targetDir)
62-
if err == nil && !strings.Contains(remote, ORIGIN) {
61+
remote, err := r.gitManager.RemoteExists(targetDir, ORIGIN)
62+
if !remote && err == nil {
6363
r.logger.Info(
6464
"remote does not exist in clone, invalidating cache",
6565
slog.Any("remote", ORIGIN),

internal/repository/repository_public_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func (suite *RepositoryPublicTestSuite) TestCloneOk() {
9696

9797
errors := errors.New("tests error")
9898
gomock.InOrder(
99-
suite.mockGit.EXPECT().Remote(targetDir).Return("", errors),
99+
suite.mockGit.EXPECT().RemoteExists(targetDir, repository.ORIGIN).Return(false, errors),
100100
suite.mockGit.EXPECT().Clone(suite.gitURL, repository.ORIGIN, targetDir).Return(nil),
101101
)
102102

@@ -114,7 +114,7 @@ func (suite *RepositoryPublicTestSuite) TestCloneReturnsErrorWhenCloneErrors() {
114114

115115
errors := errors.New("tests error")
116116
gomock.InOrder(
117-
suite.mockGit.EXPECT().Remote(gomock.Any()).Return("", errors),
117+
suite.mockGit.EXPECT().RemoteExists(gomock.Any(), gomock.Any()).Return(false, errors),
118118
suite.mockGit.EXPECT().Clone(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors),
119119
)
120120

@@ -131,7 +131,7 @@ func (suite *RepositoryPublicTestSuite) TestCloneDoesNotCloneWhenCloneDirExists(
131131
}
132132
targetDir := suite.appFs.Join(suite.cloneDir, suite.cacheDir)
133133

134-
suite.mockGit.EXPECT().Remote(targetDir).Return(repository.ORIGIN, nil)
134+
suite.mockGit.EXPECT().RemoteExists(targetDir, repository.ORIGIN).Return(true, nil)
135135
suite.mockGit.EXPECT().Update(repository.ORIGIN, targetDir).Return(nil)
136136

137137
_, err := repo.Clone(c, suite.cloneDir)
@@ -148,7 +148,7 @@ func (suite *RepositoryPublicTestSuite) TestCloneInvalidatesCaches() {
148148
targetDir := suite.appFs.Join(suite.cloneDir, suite.cacheDir)
149149

150150
gomock.InOrder(
151-
suite.mockGit.EXPECT().Remote(targetDir).Return("invalid", nil),
151+
suite.mockGit.EXPECT().RemoteExists(targetDir, repository.ORIGIN).Return(false, nil),
152152
suite.mockGit.EXPECT().Clone(suite.gitURL, repository.ORIGIN, targetDir).Return(nil),
153153
)
154154

@@ -166,7 +166,7 @@ func (suite *RepositoryPublicTestSuite) TestCloneUpdateCloneDirThrowsError() {
166166
targetDir := suite.appFs.Join(suite.cloneDir, suite.cacheDir)
167167

168168
errors := errors.New("tests error")
169-
suite.mockGit.EXPECT().Remote(targetDir).Return(repository.ORIGIN, nil)
169+
suite.mockGit.EXPECT().RemoteExists(targetDir, repository.ORIGIN).Return(true, nil)
170170
suite.mockGit.EXPECT().Update(repository.ORIGIN, targetDir).Return(errors)
171171

172172
_, err := repo.Clone(c, suite.cloneDir)

0 commit comments

Comments
 (0)