Move ParseRefString into common gerrit package
MultiPart: 2/2
Change-Id: I25ec4ff5be1895a2cec35e8a0104c2881501cc09
diff --git a/presubmit/query.go b/presubmit/query.go
index 7937f3f..bd93d27 100644
--- a/presubmit/query.go
+++ b/presubmit/query.go
@@ -10,7 +10,6 @@
"os"
"reflect"
"sort"
- "strconv"
"strings"
"v.io/jiri"
@@ -243,7 +242,7 @@
}
-type clListInfo struct {
+type processCLListResult struct {
clMap clNumberToPatchsetMap
clString string
skipPresubmitTest bool
@@ -253,7 +252,7 @@
filteredCLList gerrit.CLList
}
-func (s *clsSender) processCLList(jirix *jiri.X, curCLList gerrit.CLList) *clListInfo {
+func (s *clsSender) processCLList(jirix *jiri.X, curCLList gerrit.CLList) *processCLListResult {
curCLMap := clNumberToPatchsetMap{}
clStrings := []string{}
skipPresubmitTest := false
@@ -269,7 +268,7 @@
}
filteredCLList = append(filteredCLList, curCL)
- cl, patchset, err := parseRefString(curCL.Reference())
+ cl, patchset, err := gerrit.ParseRefString(curCL.Reference())
if err != nil {
printf(jirix.Stderr(), "%v\n", err)
return nil
@@ -286,7 +285,7 @@
projects = append(projects, curCL.Project)
refs = append(refs, curCL.Reference())
}
- return &clListInfo{
+ return &processCLListResult{
clMap: curCLMap,
clString: strings.Join(clStrings, ", "),
skipPresubmitTest: skipPresubmitTest,
@@ -423,7 +422,7 @@
curCLs := clNumberToPatchsetMap{}
refs := strings.Split(curRefs, ":")
for _, ref := range refs {
- cl, patchset, err := parseRefString(ref)
+ cl, patchset, err := gerrit.ParseRefString(ref)
if err != nil {
return false, err
}
@@ -467,23 +466,6 @@
return keys
}
-// parseRefString parses the cl and patchset number from the given ref string.
-func parseRefString(ref string) (int, int, error) {
- parts := strings.Split(ref, "/")
- if expected, got := 5, len(parts); expected != got {
- return -1, -1, fmt.Errorf("unexpected number of %q parts: expected %v, got %v", ref, expected, got)
- }
- cl, err := strconv.Atoi(parts[3])
- if err != nil {
- return -1, -1, fmt.Errorf("Atoi(%q) failed: %v", parts[3], err)
- }
- patchset, err := strconv.Atoi(parts[4])
- if err != nil {
- return -1, -1, fmt.Errorf("Atoi(%q) failed: %v", parts[4], err)
- }
- return cl, patchset, nil
-}
-
// addPresubmitTestBuild uses Jenkins' remote access API to add a build for
// a set of open CLs to run presubmit tests.
func addPresubmitTestBuild(jirix *jiri.X, cls gerrit.CLList, tests []string) error {
diff --git a/presubmit/query_test.go b/presubmit/query_test.go
index a10075c..1a56b2d 100644
--- a/presubmit/query_test.go
+++ b/presubmit/query_test.go
@@ -229,51 +229,3 @@
}
}
}
-
-func TestParseRefString(t *testing.T) {
- type testCase struct {
- ref string
- expectErr bool
- expectedCL int
- expectedPatchSet int
- }
- testCases := []testCase{
- // Normal case
- testCase{
- ref: "ref/changes/12/3412/2",
- expectedCL: 3412,
- expectedPatchSet: 2,
- },
- // Error cases
- testCase{
- ref: "ref/123",
- expectErr: true,
- },
- testCase{
- ref: "ref/changes/12/a/2",
- expectErr: true,
- },
- testCase{
- ref: "ref/changes/12/3412/a",
- expectErr: true,
- },
- }
- for _, test := range testCases {
- cl, patchset, err := parseRefString(test.ref)
- if test.expectErr {
- if err == nil {
- t.Fatalf("want errors, got: %v", err)
- }
- } else {
- if err != nil {
- t.Fatalf("want no errors, got: %v", err)
- }
- if cl != test.expectedCL {
- t.Fatalf("want %v, got %v", test.expectedCL, cl)
- }
- if patchset != test.expectedPatchSet {
- t.Fatalf("want %v, got %v", test.expectedPatchSet, patchset)
- }
- }
- }
-}
diff --git a/presubmit/test.go b/presubmit/test.go
index fd4b8c7..a538c52 100644
--- a/presubmit/test.go
+++ b/presubmit/test.go
@@ -23,6 +23,7 @@
"v.io/jiri"
"v.io/jiri/collect"
+ "v.io/jiri/gerrit"
"v.io/jiri/gitutil"
"v.io/jiri/project"
"v.io/jiri/runutil"
@@ -409,7 +410,7 @@
cls := []cl{}
for i, ref := range refs {
project := projects[i]
- clNumber, patchset, err := parseRefString(ref)
+ clNumber, patchset, err := gerrit.ParseRefString(ref)
if err != nil {
return nil, err
}