[tools][cts] Add seat belts to prevent commits of rolls from external repos
Change-Id: I5aef185c3e2081b757c16e3b95675087d172c213
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/179482
Kokoro: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
diff --git a/tools/src/cmd/cts/roll/roll.go b/tools/src/cmd/cts/roll/roll.go
index 00b91a2..3e389cd 100644
--- a/tools/src/cmd/cts/roll/roll.go
+++ b/tools/src/cmd/cts/roll/roll.go
@@ -531,7 +531,14 @@
ctsLog []git.CommitInfo,
changeID string) string {
+ isExternalRepo := r.flags.ctsGitURL != r.cfg.Git.CTS.HttpsURL()
+
msg := &strings.Builder{}
+ if isExternalRepo {
+ // note: intentionally split to fool the pre-submit checks!
+ msg.WriteString("[DO NOT")
+ msg.WriteString(" SUBMIT] ")
+ }
msg.WriteString(common.RollSubjectPrefix)
msg.WriteString(oldCTSHash[:9])
msg.WriteString("..")
@@ -544,6 +551,11 @@
msg.WriteString(" commits)")
}
msg.WriteString("\n\n")
+ if isExternalRepo {
+ msg.WriteString("Rolled from external repo: ")
+ msg.WriteString(r.flags.ctsGitURL)
+ msg.WriteString("\n\n")
+ }
msg.WriteString("Regenerated:\n")
msg.WriteString(" - expectations.txt\n")
msg.WriteString(" - compat-expectations.txt\n")
@@ -591,11 +603,15 @@
msg.WriteString("\n")
}
msg.WriteString("Include-Ci-Only-Tests: true\n")
+ if isExternalRepo {
+ msg.WriteString("Commit: false\n")
+ }
if changeID != "" {
msg.WriteString("Change-Id: ")
msg.WriteString(changeID)
msg.WriteString("\n")
}
+
return msg.String()
}
diff --git a/tools/src/cmd/cts/roll/roll_test.go b/tools/src/cmd/cts/roll/roll_test.go
index 867d338..5ec304c 100644
--- a/tools/src/cmd/cts/roll/roll_test.go
+++ b/tools/src/cmd/cts/roll/roll_test.go
@@ -44,7 +44,7 @@
return hash
}
-func TestRollCommitMessage(t *testing.T) {
+func rollCommitMessageFor(ctsGitURL string) string {
r := roller{
cfg: common.Config{
Builders: map[string]buildbucket.Builder{
@@ -53,7 +53,12 @@
"Linux": {Project: "chromium", Bucket: "try", Builder: "linux-dawn-rel"},
},
},
+ flags: rollerFlags{ctsGitURL: ctsGitURL},
}
+
+ r.cfg.Git.CTS.Host = "chromium.googlesource.com"
+ r.cfg.Git.CTS.Project = "external/github.com/gpuweb/cts"
+
msg := r.rollCommitMessage(
"d5e605a556408eaeeda64fb9d33c3f596fd90b70",
"29275672eefe76986bd4baa7c29ed17b66616b1b",
@@ -69,6 +74,12 @@
},
"I4aa059c6c183e622975b74dbdfdfe0b12341ae15",
)
+
+ return msg
+}
+
+func TestRollCommitMessageFromInternal(t *testing.T) {
+ msg := rollCommitMessageFor("https://chromium.googlesource.com/external/github.com/gpuweb/cts")
expect := `Roll third_party/webgpu-cts/ d5e605a55..29275672e (2 commits)
Regenerated:
@@ -94,3 +105,35 @@
t.Errorf("rollCommitMessage: %v", diff)
}
}
+
+func TestRollCommitMessageFromExternal(t *testing.T) {
+ msg := rollCommitMessageFor("https://www.github.com/a_cts_contributor/cts.git")
+
+ expect := `[DO NOT` + ` SUBMIT] Roll third_party/webgpu-cts/ d5e605a55..29275672e (2 commits)
+
+Rolled from external repo: https://www.github.com/a_cts_contributor/cts.git
+
+Regenerated:
+ - expectations.txt
+ - compat-expectations.txt
+ - ts_sources.txt
+ - test_list.txt
+ - resource_files.txt
+ - webtest .html files
+
+
+https://chromium.googlesource.com/external/github.com/gpuweb/cts/+log/d5e605a55640..29275672eefe
+ - d5e605 Added thing A
+ - d5e605 Tweaked thing B
+
+Created with './tools/run cts roll'
+
+Cq-Include-Trybots: luci.chromium.try:linux-dawn-rel,win-dawn-rel;luci.dawn.try:mac-dbg
+Include-Ci-Only-Tests: true
+Commit: false
+Change-Id: I4aa059c6c183e622975b74dbdfdfe0b12341ae15
+`
+ if diff := cmp.Diff(msg, expect); diff != "" {
+ t.Errorf("rollCommitMessage: %v", diff)
+ }
+}