Go · 1086 bytes Raw Blame History
1 // SPDX-License-Identifier: AGPL-3.0-or-later
2
3 package main
4
5 import (
6 "reflect"
7 "testing"
8 )
9
10 func TestParseRunnerLabels(t *testing.T) {
11 tests := []struct {
12 name string
13 raw string
14 want []string
15 }{
16 {name: "empty", raw: "", want: []string{}},
17 {name: "trim and dedupe", raw: " self-hosted, linux,linux,ubuntu-24.04 ", want: []string{"self-hosted", "linux", "ubuntu-24.04"}},
18 {name: "underscore dot dash", raw: "gpu_cuda-12.4", want: []string{"gpu_cuda-12.4"}},
19 }
20 for _, tt := range tests {
21 t.Run(tt.name, func(t *testing.T) {
22 got, err := parseRunnerLabels(tt.raw)
23 if err != nil {
24 t.Fatalf("parseRunnerLabels: %v", err)
25 }
26 if !reflect.DeepEqual(got, tt.want) {
27 t.Fatalf("labels: got %#v, want %#v", got, tt.want)
28 }
29 })
30 }
31 }
32
33 func TestParseRunnerLabelsRejectsInvalid(t *testing.T) {
34 tests := []string{
35 "linux,",
36 "linux,,x64",
37 "has space",
38 "semi;colon",
39 }
40 for _, raw := range tests {
41 t.Run(raw, func(t *testing.T) {
42 if _, err := parseRunnerLabels(raw); err == nil {
43 t.Fatal("parseRunnerLabels returned nil error")
44 }
45 })
46 }
47 }
48