package metrics import ( "reflect" "testing" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" ) func TestArgsToLabels(t *testing.T) { testcases := []struct { name string input []string want prometheus.Labels }{ { name: "input is empty", input: []string{}, want: prometheus.Labels{}, }, { name: "input is nil", input: nil, want: prometheus.Labels{}, }, { name: "valid", input: []string{"key", "value"}, want: prometheus.Labels{"key": "value"}, }, { name: "multi valid", input: []string{"key", "value", "key1", "value1"}, want: prometheus.Labels{"key": "value", "key1": "value1"}, }, { name: "bad key", input: []string{"value"}, want: prometheus.Labels{}, }, { name: "multi bad key", input: []string{"key", "value", "value1"}, want: prometheus.Labels{"key": "value"}, }, } for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { got := GetLabelsFromKV(tc.input) require.True(t, reflect.DeepEqual(tc.want, got)) }) } }