Skip to content

Commit 265ee47

Browse files
authored
fix(internal/sidekick/rust_release): require git v2.28.0 (#2963)
The sidekick CLI uses the `-b` flag for `git init`, which was introduced in v2.28. Check that v2.28.x is installed before running tests. Fixes #2962
1 parent 53de44d commit 265ee47

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

internal/sidekick/rust_release/bump_versions_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import (
1919
"os"
2020
"os/exec"
2121
"path"
22+
"strconv"
23+
"strings"
2224
"testing"
2325

2426
"github.com/googleapis/librarian/internal/sidekick/config"
@@ -229,6 +231,37 @@ func requireCommand(t *testing.T, command string) {
229231
if _, err := exec.LookPath(command); err != nil {
230232
t.Skipf("skipping test because %s is not installed", command)
231233
}
234+
if command == "git" {
235+
requireGitVersion(t)
236+
}
237+
}
238+
239+
func requireGitVersion(t *testing.T) {
240+
t.Helper()
241+
out, err := exec.Command("git", "--version").Output()
242+
if err != nil {
243+
t.Skipf("cannot determine git version: %v", err)
244+
}
245+
v := strings.TrimSpace(string(out))
246+
f := strings.Fields(v)
247+
if len(f) < 3 {
248+
t.Skipf("unexpected git version format: %s", v)
249+
}
250+
parts := strings.Split(f[2], ".")
251+
if len(parts) < 2 {
252+
t.Skipf("unexpected git version format: %s", f[2])
253+
}
254+
major, err := strconv.Atoi(parts[0])
255+
if err != nil {
256+
t.Skipf("cannot parse git major version: %s", parts[0])
257+
}
258+
minor, err := strconv.Atoi(parts[1])
259+
if err != nil {
260+
t.Skipf("cannot parse git minor version: %s", parts[1])
261+
}
262+
if major < 2 || major == 2 && minor < 28 {
263+
t.Skipf("git 2.28 or later required; have %s", f[2])
264+
}
232265
}
233266

234267
func configNewGitRepository(t *testing.T) {

0 commit comments

Comments
 (0)