aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2019-10-22 15:57:26 +0200
committerDmitry Vyukov <dvyukov@google.com>2019-10-22 15:57:26 +0200
commit788abb174fbfb428dfaeaf3424bd142a807c89e4 (patch)
treedefd66a2739ba54da673f6e50d4afcc7b9462d94 /pkg
parent084e388155d4ea60d54e44b90cd10eef660a5b76 (diff)
pkg/vcs: detect old git binary that can't do bisection
Diffstat (limited to 'pkg')
-rw-r--r--pkg/bisect/bisect_test.go3
-rw-r--r--pkg/vcs/test_util.go9
2 files changed, 12 insertions, 0 deletions
diff --git a/pkg/bisect/bisect_test.go b/pkg/bisect/bisect_test.go
index 7a1d02a90..ff4602278 100644
--- a/pkg/bisect/bisect_test.go
+++ b/pkg/bisect/bisect_test.go
@@ -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 {
diff --git a/pkg/vcs/test_util.go b/pkg/vcs/test_util.go
index 55bd7bccd..148360a08 100644
--- a/pkg/vcs/test_util.go
+++ b/pkg/vcs/test_util.go
@@ -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")