internal/relui: use string slice for skips

We support string slices now. Use them instead of a janky
space-separated list.

For golang/go#51797.

Change-Id: Id2c090412443239c8e1e10563dac694ff2869b2d
Reviewed-on: https://go-review.googlesource.com/c/build/+/406020
Auto-Submit: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Run-TryBot: Heschi Kreinick <heschi@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
diff --git a/internal/relui/buildrelease_test.go b/internal/relui/buildrelease_test.go
index 87a4afd..67f9ac5 100644
--- a/internal/relui/buildrelease_test.go
+++ b/internal/relui/buildrelease_test.go
@@ -54,7 +54,7 @@
 	w, err := workflow.Start(wd, map[string]interface{}{
 		"Revision": "0",
 		"Version":  "go1.18releasetest1",
-		"Targets to skip testing (space-separated target names or 'all') (optional)": "",
+		"Targets to skip testing (or 'all') (optional)": []string(nil),
 	})
 	if err != nil {
 		t.Fatal(err)
diff --git a/internal/relui/workflows.go b/internal/relui/workflows.go
index cdd761a..f1bffb2 100644
--- a/internal/relui/workflows.go
+++ b/internal/relui/workflows.go
@@ -203,7 +203,7 @@
 	}
 	version := wd.Parameter(workflow.Parameter{Name: "Version", Example: "go1.10.1"})
 	revision := wd.Parameter(workflow.Parameter{Name: "Revision", Example: "release-branch.go1.10"})
-	skipTests := wd.Parameter(workflow.Parameter{Name: "Targets to skip testing (space-separated target names or 'all') (optional)"})
+	skipTests := wd.Parameter(workflow.Parameter{Name: "Targets to skip testing (or 'all') (optional)", ParameterType: workflow.SliceShort})
 
 	source := wd.Task("Build source archive", tasks.buildSource, revision, version)
 	// Artifact file paths.
@@ -275,12 +275,12 @@
 	})
 }
 
-func (b *BuildReleaseTasks) runTests(ctx *workflow.TaskContext, target *releasetargets.Target, buildlet, skipTests string, binary artifact) (string, error) {
-	skipped := skipTests == "all"
-	skipTargets := strings.Fields(skipTests)
-	for _, skip := range skipTargets {
-		if target.Name == skip {
+func (b *BuildReleaseTasks) runTests(ctx *workflow.TaskContext, target *releasetargets.Target, buildlet string, skipTests []string, binary artifact) (string, error) {
+	skipped := false
+	for _, skip := range skipTests {
+		if skip == "all" || target.Name == skip {
 			skipped = true
+			break
 		}
 	}
 	if skipped {