Skip to content

Commit 041ab4d

Browse files
committed
maintner/maintnerd/maintapi: ignore unexpected release branches
Fixes golang/go#29510 Change-Id: Ia67cd1e929282d840f6a1607d56da7e3ba65f5b5 Reviewed-on: https://go-review.googlesource.com/c/157443 Reviewed-by: Brad Fitzpatrick <[email protected]>
1 parent 2217751 commit 041ab4d

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

maintner/maintnerd/maintapi/api.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import (
1111
"fmt"
1212
"io"
1313
"log"
14+
"regexp"
1415
"sort"
16+
"strconv"
1517
"strings"
1618
"sync"
1719
"time"
@@ -244,6 +246,10 @@ type nonChangeRefLister interface {
244246
ForeachNonChangeRef(fn func(ref string, hash maintner.GitHash) error) error
245247
}
246248

249+
// releaseBranchRx matches things of the form "release-branch.go1.5" or "release-branch.go2",
250+
// but not things like "release-branch.go1.10-security".
251+
var releaseBranchRx = regexp.MustCompile(`^release-branch\.go(\d{1,2})(?:\.(\d{1,3}))?$`)
252+
247253
// supportedGoReleases returns the latest patches of releases
248254
// that are considered supported per policy.
249255
func supportedGoReleases(goProj nonChangeRefLister) ([]*apipb.GoRelease, error) {
@@ -289,14 +295,16 @@ func supportedGoReleases(goProj nonChangeRefLister) ([]*apipb.GoRelease, error)
289295
case strings.HasPrefix(ref, "refs/heads/release-branch.go"):
290296
// Release branch.
291297
branchName := ref[len("refs/heads/"):]
292-
var major, minor int32
293-
_, err := fmt.Sscanf(branchName, "release-branch.go%d.%d", &major, &minor)
294-
if err == io.ErrUnexpectedEOF {
295-
// Do nothing.
296-
} else if err != nil {
298+
m := releaseBranchRx.FindStringSubmatch(branchName)
299+
if m == nil {
297300
return nil
298301
}
299-
branches[majorMinor{major, minor}] = branch{
302+
var major, minor int
303+
major, _ = strconv.Atoi(m[1])
304+
if len(m) > 2 {
305+
minor, _ = strconv.Atoi(m[2])
306+
}
307+
branches[majorMinor{int32(major), int32(minor)}] = branch{
300308
Name: branchName,
301309
Commit: hash,
302310
}

maintner/maintnerd/maintapi/api_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,6 @@ func TestGetRef(t *testing.T) {
5656
var hitGerrit = flag.Bool("hit_gerrit", false, "query production Gerrit in TestFindTryWork")
5757

5858
func TestFindTryWork(t *testing.T) {
59-
if testing.Short() {
60-
t.Skip("skipping in short mode")
61-
}
6259
if !*hitGerrit {
6360
t.Skip("skipping without flag --hit_gerrit")
6461
}
@@ -153,6 +150,9 @@ var (
153150
)
154151

155152
func getGoData(tb testing.TB) *maintner.Corpus {
153+
if testing.Short() {
154+
tb.Skip("skipping maintner godata test in short mode")
155+
}
156156
corpusMu.Lock()
157157
defer corpusMu.Unlock()
158158
if corpusCache != nil {
@@ -185,6 +185,8 @@ func TestSupportedGoReleases(t *testing.T) {
185185
{"refs/heads/release-branch.go1.1", gitHash("1d6d8fca241bb611af51e265c1b5a2e9ae904702")},
186186
{"refs/heads/release-branch.go1.10", gitHash("e97b7d68f107ff60152f5bd5701e0286f221ee93")},
187187
{"refs/heads/release-branch.go1.11", gitHash("97781d2ed116d2cd9cb870d0b84fc0ec598c9abc")},
188+
{"refs/heads/release-branch.go1.10-security", gitHash("e97b7d68f107ff60152f5bd5701e0286f221ee93")},
189+
{"refs/heads/release-branch.go1.11-security", gitHash("97781d2ed116d2cd9cb870d0b84fc0ec598c9abc")},
188190
{"refs/heads/release-branch.go1.2", gitHash("43d00b0942c1c6f43993ac71e1eea48e62e22b8d")},
189191
{"refs/heads/release-branch.r59", gitHash("5d9765785dff74784bbdad43f7847b6825509032")},
190192
{"refs/heads/release-branch.r60", gitHash("394b383a1ee0ac3fec5e453a7dbe590d3ce6d6b0")},

0 commit comments

Comments
 (0)