pkg/vcs: detect old git binary that can't do bisection

This commit is contained in:
Dmitry Vyukov 2019-10-22 15:57:26 +02:00
parent 084e388155
commit 788abb174f
2 changed files with 12 additions and 0 deletions

View File

@ -85,6 +85,9 @@ func TestBisectCause(t *testing.T) {
}
}
}
if !originRepo.SupportsBisection() {
t.Skip("bisection is unsupported by git (probably too old version)")
}
repo := vcs.CloneTestRepo(t, baseDir, "repo", originRepo)
r, err := vcs.NewRepo("test", "64", repo.Dir)
if err != nil {

View File

@ -3,6 +3,7 @@ package vcs
import (
"fmt"
"path/filepath"
"strings"
"testing"
"time"
@ -82,6 +83,14 @@ func (repo *TestRepo) SetTag(tag string) {
repo.git("tag", tag)
}
func (repo *TestRepo) SupportsBisection() bool {
// Detect too old git binary. --no-contains appeared in git 2.13.
_, err := repo.repo.previousReleaseTags("HEAD", true)
return err == nil ||
!strings.Contains(err.Error(), "usage: git tag") &&
!strings.Contains(err.Error(), "error: unknown option")
}
func CreateTestRepo(t *testing.T, baseDir, name string) *TestRepo {
repo := MakeTestRepo(t, filepath.Join(baseDir, name))
repo.git("checkout", "-b", "master")