Skip to content

Commit d94283a

Browse files
committed
temp
Signed-off-by: Frédéric BIDON <fredbi@yahoo.com>
1 parent 1befa8a commit d94283a

File tree

3 files changed

+40
-5
lines changed

3 files changed

+40
-5
lines changed

fuzz_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package jsonpointer
22

3+
/*
34
import (
45
"testing"
56
@@ -19,3 +20,4 @@ func FuzzParse(f *testing.F) {
1920
})
2021
})
2122
}
23+
*/

pointer.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -166,15 +166,15 @@ func (p *Pointer) set(node, data any, nameProvider *jsonname.NameProvider) error
166166
)
167167
}
168168

169-
if nameProvider == nil {
170-
nameProvider = jsonname.DefaultJSONNameProvider
171-
}
172-
173169
// full document when empty
174170
if len(p.referenceTokens) == 0 {
175171
return nil
176172
}
177173

174+
if nameProvider == nil {
175+
nameProvider = jsonname.DefaultJSONNameProvider
176+
}
177+
178178
lastI := len(p.referenceTokens) - 1
179179
for i, token := range p.referenceTokens {
180180
isLastToken := i == lastI
@@ -420,6 +420,7 @@ func offsetSingleObject(dec *json.Decoder, decodedToken string) (int64, error) {
420420
return 0, fmt.Errorf("invalid token %#v: %w", tk, ErrPointer)
421421
}
422422
}
423+
423424
return 0, fmt.Errorf("token reference %q not found: %w", decodedToken, ErrPointer)
424425
}
425426

@@ -452,6 +453,7 @@ func offsetSingleArray(dec *json.Decoder, decodedToken string) (int64, error) {
452453
if !dec.More() {
453454
return 0, fmt.Errorf("token reference %q not found: %w", decodedToken, ErrPointer)
454455
}
456+
455457
return dec.InputOffset(), nil
456458
}
457459

@@ -477,10 +479,11 @@ func drainSingle(dec *json.Decoder) error {
477479
}
478480
}
479481

480-
// Consumes the ending delim
482+
// consumes the ending delim
481483
if _, err := dec.Token(); err != nil {
482484
return err
483485
}
486+
484487
return nil
485488
}
486489

pointer_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,26 @@ func TestFullDocument(t *testing.T) {
102102
asMap, ok := result.(map[string]any)
103103
require.True(t, ok)
104104
require.Lenf(t, asMap, testDocumentNBItems(), "Get(%v) = %v, expect full document", in, result)
105+
106+
t.Run("should set value in doc, with nil name provider", func(t *testing.T) {
107+
setter, err := New("/foo/0")
108+
require.NoErrorf(t, err, "New(%v) error %v", in, err)
109+
110+
const value = "hey"
111+
require.NoError(t, setter.set(asMap, value, nil))
112+
113+
foos, ok := asMap["foo"]
114+
require.True(t, ok)
115+
116+
asArray, ok := foos.([]any)
117+
require.Len(t, asArray, 2)
118+
119+
foo := asArray[0]
120+
bar, ok := foo.(string)
121+
require.True(t, ok)
122+
123+
require.Equal(t, value, bar)
124+
})
105125
})
106126
})
107127
}
@@ -873,4 +893,14 @@ func TestEdgeCases(t *testing.T) {
873893
require.ErrorIs(t, err, ErrUnsupportedValueType)
874894
})
875895

896+
t.Run("set with empty pointer", func(t *testing.T) {
897+
p, err := New("")
898+
require.NoError(t, err)
899+
900+
doc := testDocumentJSON(t)
901+
newDoc, err := p.Set(doc, 1)
902+
require.NoError(t, err)
903+
904+
require.Equal(t, doc, newDoc)
905+
})
876906
}

0 commit comments

Comments
 (0)