mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Make selector parsing deterministic
This commit is contained in:
parent
671a7f1c27
commit
b3fbc47bd4
@ -18,6 +18,7 @@ package labels
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -101,6 +102,7 @@ func SelectorFromSet(ls Set) Selector {
|
|||||||
// Takes a string repsenting a selector and returns an object suitable for matching, or an error.
|
// Takes a string repsenting a selector and returns an object suitable for matching, or an error.
|
||||||
func ParseSelector(selector string) (Selector, error) {
|
func ParseSelector(selector string) (Selector, error) {
|
||||||
parts := strings.Split(selector, ",")
|
parts := strings.Split(selector, ",")
|
||||||
|
sort.StringSlice(parts).Sort()
|
||||||
var items []Selector
|
var items []Selector
|
||||||
for _, part := range parts {
|
for _, part := range parts {
|
||||||
if part == "" {
|
if part == "" {
|
||||||
|
@ -47,6 +47,17 @@ func TestSelectorParse(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDeterministicParse(t *testing.T) {
|
||||||
|
s1, err := ParseSelector("x=a,a=x")
|
||||||
|
s2, err2 := ParseSelector("a=x,x=a")
|
||||||
|
if err != nil || err2 != nil {
|
||||||
|
t.Errorf("Unexpected parse error")
|
||||||
|
}
|
||||||
|
if s1.String() != s2.String() {
|
||||||
|
t.Errorf("Non-deterministic parse")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func expectMatch(t *testing.T, selector string, ls Set) {
|
func expectMatch(t *testing.T, selector string, ls Set) {
|
||||||
lq, err := ParseSelector(selector)
|
lq, err := ParseSelector(selector)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user