Encode project name in FullChangeId
Bug: skia:12288
Change-Id: Iec397522fbbde2c28b16f235daa8e565c417bec1
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/435620
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
diff --git a/go/gerrit/gerrit.go b/go/gerrit/gerrit.go
index 8ffd001..d5c9e03 100644
--- a/go/gerrit/gerrit.go
+++ b/go/gerrit/gerrit.go
@@ -1484,10 +1484,14 @@
// change. See
// https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#change-id
func FullChangeId(ci *ChangeInfo) string {
+ project := ci.Project
+ // Encode the project to convert names like chromium/src into chromium%2Fsrc.
+ project = url.QueryEscape(project)
+
branch := ci.Branch
// Do not include refs/heads/ when constructing the full change Id.
branch = strings.TrimPrefix(branch, "refs/heads/")
// Encode the branch to convert names like chrome/m90 into chrome%2Fm90.
branch = url.QueryEscape(branch)
- return fmt.Sprintf("%s~%s~%s", ci.Project, branch, ci.ChangeId)
+ return fmt.Sprintf("%s~%s~%s", project, branch, ci.ChangeId)
}
diff --git a/go/gerrit/gerrit_test.go b/go/gerrit/gerrit_test.go
index bb4ccc6..7daedf0 100644
--- a/go/gerrit/gerrit_test.go
+++ b/go/gerrit/gerrit_test.go
@@ -607,11 +607,15 @@
}
require.Equal(t, "skia~main~abc", FullChangeId(ci))
+ // Test project with "/" in the name.
+ ci.Project = "chromium/src"
+ require.Equal(t, "chromium%2Fsrc~main~abc", FullChangeId(ci))
+
// Test branch with "/" in the name.
ci.Branch = "chrome/m90"
- require.Equal(t, "skia~chrome%2Fm90~abc", FullChangeId(ci))
+ require.Equal(t, "chromium%2Fsrc~chrome%2Fm90~abc", FullChangeId(ci))
// Test branch with "refs/heads/" prefix.
ci.Branch = "refs/heads/chrome/m90"
- require.Equal(t, "skia~chrome%2Fm90~abc", FullChangeId(ci))
+ require.Equal(t, "chromium%2Fsrc~chrome%2Fm90~abc", FullChangeId(ci))
}