From c167017f808d2a46787c9a48e9dc55c011b35f96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charles-Edouard=20Br=C3=A9t=C3=A9ch=C3=A9?= Date: Tue, 17 Sep 2024 10:20:25 +0200 Subject: [PATCH] path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Charles-Edouard Brétéché --- pkg/engine/assert/parse.go | 10 +++++----- pkg/matching/match.go | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkg/engine/assert/parse.go b/pkg/engine/assert/parse.go index 338d84b3..dbecff6e 100644 --- a/pkg/engine/assert/parse.go +++ b/pkg/engine/assert/parse.go @@ -15,13 +15,13 @@ import ( "k8s.io/apimachinery/pkg/util/validation/field" ) -func Parse(ctx context.Context, assertion any) (Assertion, error) { +func Parse(ctx context.Context, path *field.Path, assertion any) (Assertion, error) { switch reflectutils.GetKind(assertion) { case reflect.Slice: node := sliceNode{} valueOf := reflect.ValueOf(assertion) for i := 0; i < valueOf.Len(); i++ { - sub, err := Parse(ctx, valueOf.Index(i).Interface()) + sub, err := Parse(ctx, path.Index(i), valueOf.Index(i).Interface()) if err != nil { return nil, err } @@ -32,7 +32,8 @@ func Parse(ctx context.Context, assertion any) (Assertion, error) { node := mapNode{} iter := reflect.ValueOf(assertion).MapRange() for iter.Next() { - sub, err := Parse(ctx, iter.Value().Interface()) + // TODO: key in path + sub, err := Parse(ctx, path, iter.Value().Interface()) if err != nil { return nil, err } @@ -40,8 +41,7 @@ func Parse(ctx context.Context, assertion any) (Assertion, error) { } return node, nil default: - // TODO: propagate path - return newScalarNode(ctx, nil, assertion) + return newScalarNode(ctx, path, assertion) } } diff --git a/pkg/matching/match.go b/pkg/matching/match.go index 71f719d5..a4a25362 100644 --- a/pkg/matching/match.go +++ b/pkg/matching/match.go @@ -48,7 +48,7 @@ func MatchAssert(ctx context.Context, path *field.Path, match *v1alpha1.Assert, var fails []Result path := path.Child("any") for i, assertion := range match.Any { - parsed, err := assert.Parse(ctx, assertion.Check.Value) + parsed, err := assert.Parse(ctx, path.Index(i).Child("check"), assertion.Check.Value) if err != nil { return fails, err } @@ -76,7 +76,7 @@ func MatchAssert(ctx context.Context, path *field.Path, match *v1alpha1.Assert, var fails []Result path := path.Child("all") for i, assertion := range match.All { - parsed, err := assert.Parse(ctx, assertion.Check.Value) + parsed, err := assert.Parse(ctx, path.Index(i).Child("check"), assertion.Check.Value) if err != nil { return fails, err } @@ -126,7 +126,7 @@ func Match(ctx context.Context, path *field.Path, match *v1alpha1.Match, actual func MatchAny(ctx context.Context, path *field.Path, assertions []v1alpha1.Any, actual any, bindings binding.Bindings, opts ...template.Option) (field.ErrorList, error) { var errs field.ErrorList for i, assertion := range assertions { - parsed, err := assert.Parse(ctx, assertion.Value) + parsed, err := assert.Parse(ctx, path.Index(i), assertion.Value) if err != nil { return errs, err } @@ -145,7 +145,7 @@ func MatchAny(ctx context.Context, path *field.Path, assertions []v1alpha1.Any, func MatchAll(ctx context.Context, path *field.Path, assertions []v1alpha1.Any, actual any, bindings binding.Bindings, opts ...template.Option) (field.ErrorList, error) { var errs field.ErrorList for i, assertion := range assertions { - parsed, err := assert.Parse(ctx, assertion.Value) + parsed, err := assert.Parse(ctx, path.Index(i), assertion.Value) if err != nil { return errs, err }