Skip to content

Commit bda634e

Browse files
committed
Apply feedback
1 parent a8ac1f5 commit bda634e

File tree

2 files changed

+48
-40
lines changed

2 files changed

+48
-40
lines changed

fieldpath/set.go

+8-2
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ func MakePrefixMatcherOrDie(parts ...interface{}) *SetMatcher {
153153
//
154154
// - PathElementMatcher - for wildcards, `MatchAnyPathElement()` can be used as well.
155155
// - PathElement - for any path element
156-
// - value.FieldList - for associative list keys
156+
// - value.FieldList - for listMap keys
157157
// - value.Value - for scalar list elements
158158
// - string - For field names
159159
// - int - for array indices
@@ -164,19 +164,25 @@ func PrefixMatcher(parts ...interface{}) (*SetMatcher, error) {
164164
var pattern PathElementMatcher
165165
switch t := part.(type) {
166166
case PathElementMatcher:
167+
// any path matcher, including wildcard
167168
pattern = t
168169
case PathElement:
170+
// any path element
169171
pattern = PathElementMatcher{PathElement: t}
170172
case *value.FieldList:
173+
// a listMap key
171174
if len(*t) == 0 {
172175
return nil, fmt.Errorf("associative list key type path elements must have at least one key (got zero)")
173176
}
174177
pattern = PathElementMatcher{PathElement: PathElement{Key: t}}
175178
case value.Value:
179+
// a scalar or set-type list element
176180
pattern = PathElementMatcher{PathElement: PathElement{Value: &t}}
177181
case string:
182+
// a plain field name
178183
pattern = PathElementMatcher{PathElement: PathElement{FieldName: &t}}
179184
case int:
185+
// a plain list index
180186
pattern = PathElementMatcher{PathElement: PathElement{Index: &t}}
181187
default:
182188
return nil, fmt.Errorf("unexpected type %T", t)
@@ -270,7 +276,7 @@ type SetMemberMatcher struct {
270276
Child *SetMatcher
271277
}
272278

273-
// PathElementMatcher defined a match matcher for a PathElement.
279+
// PathElementMatcher defined a path matcher for a PathElement.
274280
type PathElementMatcher struct {
275281
// Wildcard indicates that all PathElements are matched by this matcher.
276282
// If set, PathElement is ignored.

fieldpath/set_test.go

+40-38
Original file line numberDiff line numberDiff line change
@@ -769,16 +769,20 @@ func TestFilterByPattern(t *testing.T) {
769769
input: NewSet(
770770
MakePathOrDie("spec"),
771771
MakePathOrDie("spec", "containers"),
772+
MakePathOrDie("spec", "containers", 0),
772773
MakePathOrDie("spec", "containers", 0, "resources"),
773774
MakePathOrDie("spec", "containers", 0, "resources", "limits"),
774775
MakePathOrDie("spec", "containers", 0, "resources", "limits", "cpu"),
775776
MakePathOrDie("spec", "containers", 0, "resources", "requests"),
776777
MakePathOrDie("spec", "containers", 0, "resources", "requests", "cpu"),
777778
MakePathOrDie("spec", "containers", 0, "resources", "claims"),
779+
MakePathOrDie("spec", "containers", 0, "resources", "claims", 0),
778780
MakePathOrDie("spec", "containers", 0, "resources", "claims", 0, "name"),
779781
MakePathOrDie("spec", "containers", 0, "resources", "claims", 0, "request"),
782+
MakePathOrDie("spec", "containers", 0, "resources", "claims", 1),
780783
MakePathOrDie("spec", "containers", 0, "resources", "claims", 1, "name"),
781784
MakePathOrDie("spec", "containers", 0, "resources", "claims", 1, "request"),
785+
MakePathOrDie("spec", "containers", 1),
782786
MakePathOrDie("spec", "containers", 1, "resources"),
783787
MakePathOrDie("spec", "containers", 1, "resources", "limits"),
784788
MakePathOrDie("spec", "containers", 1, "resources", "limits", "cpu"),
@@ -787,16 +791,20 @@ func TestFilterByPattern(t *testing.T) {
787791
expect: NewSet(
788792
MakePathOrDie("spec"),
789793
MakePathOrDie("spec", "containers"),
794+
MakePathOrDie("spec", "containers", 0),
790795
MakePathOrDie("spec", "containers", 0, "resources"),
791796
MakePathOrDie("spec", "containers", 0, "resources", "limits"),
792797
MakePathOrDie("spec", "containers", 0, "resources", "limits", "cpu"),
793798
MakePathOrDie("spec", "containers", 0, "resources", "requests"),
794799
MakePathOrDie("spec", "containers", 0, "resources", "requests", "cpu"),
795800
MakePathOrDie("spec", "containers", 0, "resources", "claims"),
801+
MakePathOrDie("spec", "containers", 0, "resources", "claims", 0),
796802
MakePathOrDie("spec", "containers", 0, "resources", "claims", 0, "name"),
797803
MakePathOrDie("spec", "containers", 0, "resources", "claims", 0, "request"),
804+
MakePathOrDie("spec", "containers", 0, "resources", "claims", 1),
798805
MakePathOrDie("spec", "containers", 0, "resources", "claims", 1, "name"),
799806
MakePathOrDie("spec", "containers", 0, "resources", "claims", 1, "request"),
807+
MakePathOrDie("spec", "containers", 1),
800808
MakePathOrDie("spec", "containers", 1, "resources"),
801809
MakePathOrDie("spec", "containers", 1, "resources", "limits"),
802810
MakePathOrDie("spec", "containers", 1, "resources", "limits", "cpu"),
@@ -831,6 +839,7 @@ func TestFilterByPattern(t *testing.T) {
831839
input: NewSet(
832840
MakePathOrDie("spec"),
833841
MakePathOrDie("spec", "containers"),
842+
MakePathOrDie("spec", "containers", 0),
834843
MakePathOrDie("spec", "containers", 0, "image"),
835844
MakePathOrDie("spec", "containers", 0, "workingDir"),
836845
MakePathOrDie("spec", "containers", 0, "resources"),
@@ -839,6 +848,7 @@ func TestFilterByPattern(t *testing.T) {
839848
expect: NewSet(
840849
MakePathOrDie("spec"),
841850
MakePathOrDie("spec", "containers"),
851+
MakePathOrDie("spec", "containers", 0),
842852
MakePathOrDie("spec", "containers", 0, "resources"),
843853
),
844854
},
@@ -880,44 +890,6 @@ func TestFilterByPattern(t *testing.T) {
880890
}, "field"),
881891
),
882892
},
883-
{
884-
name: "filter listMap key",
885-
input: NewSet(
886-
MakePathOrDie("spec"),
887-
MakePathOrDie("spec", "listMap",
888-
&value.FieldList{
889-
{Name: "key1", Value: value.NewValueInterface("value1")},
890-
{Name: "key2", Value: value.NewValueInterface("value2")},
891-
}),
892-
MakePathOrDie("spec", "listMap",
893-
&value.FieldList{
894-
{Name: "key1", Value: value.NewValueInterface("value1")},
895-
{Name: "key2", Value: value.NewValueInterface("value2")},
896-
}, "field"),
897-
MakePathOrDie("spec", "listMap",
898-
&value.FieldList{
899-
{Name: "key1", Value: value.NewValueInterface("valueX")},
900-
{Name: "key2", Value: value.NewValueInterface("valueY")},
901-
}, "field"),
902-
),
903-
filter: NewIncludeMatcherFilter(MakePrefixMatcherOrDie("spec", "listMap", &value.FieldList{
904-
{Name: "key1", Value: value.NewValueInterface("value1")},
905-
{Name: "key2", Value: value.NewValueInterface("value2")},
906-
})),
907-
expect: NewSet(
908-
MakePathOrDie("spec"),
909-
MakePathOrDie("spec", "listMap",
910-
&value.FieldList{
911-
{Name: "key1", Value: value.NewValueInterface("value1")},
912-
{Name: "key2", Value: value.NewValueInterface("value2")},
913-
}),
914-
MakePathOrDie("spec", "listMap",
915-
&value.FieldList{
916-
{Name: "key1", Value: value.NewValueInterface("value1")},
917-
{Name: "key2", Value: value.NewValueInterface("value2")},
918-
}, "field"),
919-
),
920-
},
921893
{
922894
name: "filter value",
923895
input: NewSet(
@@ -935,55 +907,80 @@ func TestFilterByPattern(t *testing.T) {
935907
name: "filter by index",
936908
input: NewSet(
937909
MakePathOrDie("spec"),
910+
MakePathOrDie("spec", "list"),
911+
MakePathOrDie("spec", "list", 0),
938912
MakePathOrDie("spec", "list", 0, "value"),
913+
MakePathOrDie("spec", "list", 1),
939914
MakePathOrDie("spec", "list", 1, "value"),
940915
),
941916
filter: NewIncludeMatcherFilter(MakePrefixMatcherOrDie("spec", "list", 1, "value")),
942917
expect: NewSet(
943918
MakePathOrDie("spec"),
919+
MakePathOrDie("spec", "list"),
920+
MakePathOrDie("spec", "list", 1),
944921
MakePathOrDie("spec", "list", 1, "value"),
945922
),
946923
},
947924
{
948925
name: "multiple index matchers",
949926
input: NewSet(
950927
MakePathOrDie("spec"),
928+
MakePathOrDie("spec", "list"),
929+
MakePathOrDie("spec", "list", 0),
951930
MakePathOrDie("spec", "list", 0, "value"),
931+
MakePathOrDie("spec", "list", 1),
952932
MakePathOrDie("spec", "list", 1, "value"),
933+
MakePathOrDie("spec", "list", 2),
934+
MakePathOrDie("spec", "list", 2, "value"),
953935
),
954936
filter: NewIncludeMatcherFilter(
955937
MakePrefixMatcherOrDie("spec", "list", 0, "value"),
956938
MakePrefixMatcherOrDie("spec", "list", 1, "value"),
957939
),
958940
expect: NewSet(
959941
MakePathOrDie("spec"),
942+
MakePathOrDie("spec", "list"),
943+
MakePathOrDie("spec", "list", 0),
960944
MakePathOrDie("spec", "list", 0, "value"),
945+
MakePathOrDie("spec", "list", 1),
961946
MakePathOrDie("spec", "list", 1, "value"),
962947
),
963948
},
964949
{
965950
name: "multiple field matchers",
966951
input: NewSet(
952+
MakePathOrDie("spec"),
953+
MakePathOrDie("spec", "f1"),
967954
MakePathOrDie("spec", "f1", "f11"),
955+
MakePathOrDie("spec", "f2"),
968956
MakePathOrDie("spec", "f2", "f21"),
957+
MakePathOrDie("spec", "f3"),
969958
MakePathOrDie("spec", "f3", "f31"),
970959
),
971960
filter: NewIncludeMatcherFilter(
972961
MakePrefixMatcherOrDie("spec", "f1"),
973962
MakePrefixMatcherOrDie("spec", "f3"),
974963
),
975964
expect: NewSet(
965+
MakePathOrDie("spec"),
966+
MakePathOrDie("spec", "f1"),
976967
MakePathOrDie("spec", "f1", "f11"),
968+
MakePathOrDie("spec", "f3"),
977969
MakePathOrDie("spec", "f3", "f31"),
978970
),
979971
},
980972
{
981973
name: "wildcard takes precedence",
982974
input: NewSet(
975+
MakePathOrDie("spec"),
976+
MakePathOrDie("spec", "list"),
977+
MakePathOrDie("spec", "list", 0),
983978
MakePathOrDie("spec", "list", 0, "f1"),
984979
MakePathOrDie("spec", "list", 0, "f2"),
980+
MakePathOrDie("spec", "list", 1),
985981
MakePathOrDie("spec", "list", 1, "f1"),
986982
MakePathOrDie("spec", "list", 1, "f2"),
983+
MakePathOrDie("spec", "list", 2),
987984
MakePathOrDie("spec", "list", 2, "f1"),
988985
MakePathOrDie("spec", "list", 2, "f2"),
989986
),
@@ -992,8 +989,13 @@ func TestFilterByPattern(t *testing.T) {
992989
MakePrefixMatcherOrDie("spec", "list", 1, "f2"), // ignored
993990
),
994991
expect: NewSet(
992+
MakePathOrDie("spec"),
993+
MakePathOrDie("spec", "list"),
994+
MakePathOrDie("spec", "list", 0),
995995
MakePathOrDie("spec", "list", 0, "f1"),
996+
MakePathOrDie("spec", "list", 1),
996997
MakePathOrDie("spec", "list", 1, "f1"),
998+
MakePathOrDie("spec", "list", 2),
997999
MakePathOrDie("spec", "list", 2, "f1"),
9981000
),
9991001
},

0 commit comments

Comments
 (0)