From ba40289191e953dc8e13d5b02f868976563c77e9 Mon Sep 17 00:00:00 2001 From: tobb10001 Date: Mon, 15 Jan 2024 21:57:52 +0100 Subject: [PATCH 1/3] add test for path builder without method chainging --- path_test.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/path_test.go b/path_test.go index c0073cec..0c498182 100644 --- a/path_test.go +++ b/path_test.go @@ -50,6 +50,22 @@ func TestPathBuilder(t *testing.T) { } } +func TestPathBuilderNoChain(t *testing.T) { + builder := yaml.PathBuilder{} + builder.Root() + builder.Child("a") + builder.Child("b") + builder.Index(0) + path := builder.Build() + + expected := `$.a.b[0]` + got := path.String() + + if expected != got { + t.Fatalf("failed to build path. expected:[%q] but got:[%q]", expected, got) + } +} + func TestPath(t *testing.T) { yml := ` store: From 716b6f3e9271f9693ea90b3c9e9ad0ea855ea32b Mon Sep 17 00:00:00 2001 From: tobb10001 Date: Mon, 15 Jan 2024 22:05:10 +0100 Subject: [PATCH 2/3] fix PathBuilder.Root() for non-chained method calls --- path.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/path.go b/path.go index 72554bd8..7ec9fb5d 100644 --- a/path.go +++ b/path.go @@ -372,7 +372,9 @@ type PathBuilder struct { // Root add '$' to current path. func (b *PathBuilder) Root() *PathBuilder { root := newRootNode() - return &PathBuilder{root: root, node: root} + b.root = root + b.node = root + return b } // IndexAll add '[*]' to current path. From fdcc8ba117a8c23710f38b61ce00fa243da0ac93 Mon Sep 17 00:00:00 2001 From: tobb10001 Date: Mon, 15 Jan 2024 22:34:36 +0100 Subject: [PATCH 3/3] add comment to reference corresponding PR --- path_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/path_test.go b/path_test.go index 0c498182..b9c4e670 100644 --- a/path_test.go +++ b/path_test.go @@ -51,6 +51,7 @@ func TestPathBuilder(t *testing.T) { } func TestPathBuilderNoChain(t *testing.T) { + // See PR #420. builder := yaml.PathBuilder{} builder.Root() builder.Child("a")