Skip to content

Commit 1befa8a

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

File tree

4 files changed

+49
-11
lines changed

4 files changed

+49
-11
lines changed

TODO.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
* +90% coverage
2+
* benchmark + graph (for future reference)
3+
* CONTRIBUTORS.md (ci pipeline)
4+
* fuzz test

fuzz_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package jsonpointer
2+
3+
import (
4+
"testing"
5+
6+
"github.com/go-openapi/testify/v2/require"
7+
)
8+
9+
func FuzzParse(f *testing.F) {
10+
for _, generator := range allGenerators {
11+
for _, testCase := range generator() {
12+
f.Add(testCase.uriRaw)
13+
}
14+
}
15+
16+
f.Fuzz(func(t *testing.T, input string) {
17+
require.NotPanics(t, func() {
18+
_, _ = Parse(input)
19+
})
20+
})
21+
}

pointer.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -114,18 +114,18 @@ func (p *Pointer) Offset(document string) (int64, error) {
114114

115115
// "Constructor", parses the given string JSON pointer
116116
func (p *Pointer) parse(jsonPointerString string) error {
117-
var err error
118-
119-
if jsonPointerString != emptyPointer {
120-
if !strings.HasPrefix(jsonPointerString, pointerSeparator) {
121-
err = errors.Join(ErrInvalidStart, ErrPointer)
122-
} else {
123-
referenceTokens := strings.Split(jsonPointerString, pointerSeparator)
124-
p.referenceTokens = append(p.referenceTokens, referenceTokens[1:]...)
125-
}
117+
if jsonPointerString == emptyPointer {
118+
return nil
119+
}
120+
121+
if !strings.HasPrefix(jsonPointerString, pointerSeparator) {
122+
return errors.Join(ErrInvalidStart, ErrPointer)
126123
}
127124

128-
return err
125+
referenceTokens := strings.Split(jsonPointerString, pointerSeparator)
126+
p.referenceTokens = append(p.referenceTokens, referenceTokens[1:]...)
127+
128+
return nil
129129
}
130130

131131
func (p *Pointer) get(node any, nameProvider *jsonname.NameProvider) (any, reflect.Kind, error) {

pointer_test.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ func TestOtherThings(t *testing.T) {
367367
require.Error(t, err)
368368
})
369369

370-
t.Run("resolving pointer against an unsupport type (int) should error", func(t *testing.T) {
370+
t.Run("resolving pointer against an unsupported type (int) should error", func(t *testing.T) {
371371
p, err := New("/invalid")
372372
require.NoError(t, err)
373373
_, _, err = p.Get(1234)
@@ -861,3 +861,16 @@ func TestOffset(t *testing.T) {
861861
})
862862
}
863863
}
864+
865+
func TestEdgeCases(t *testing.T) {
866+
t.Parallel()
867+
868+
t.Run("set at pointer against an unsupported type (int) should error", func(t *testing.T) {
869+
p, err := New("/invalid")
870+
require.NoError(t, err)
871+
_, err = p.Set(1, 1234)
872+
require.Error(t, err)
873+
require.ErrorIs(t, err, ErrUnsupportedValueType)
874+
})
875+
876+
}

0 commit comments

Comments
 (0)