MCPcopy
hub / github.com/tinylib/msgp / TestReadIntfRecursion

Function TestReadIntfRecursion

msgp/read_test.go:83–167  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

81}
82
83func TestReadIntfRecursion(t *testing.T) {
84 var buf bytes.Buffer
85 dec := NewReader(&buf)
86 enc := NewWriter(&buf)
87 // Test array recursion...
88 for range recursionLimit * 2 {
89 enc.WriteArrayHeader(1)
90 }
91 enc.Flush()
92 b := buf.Bytes()
93 _, err := dec.ReadIntf()
94 if !errors.Is(err, ErrRecursion) {
95 t.Errorf("unexpected Reader error: %v", err)
96 }
97 _, _, err = ReadIntfBytes(b)
98 if !errors.Is(err, ErrRecursion) {
99 t.Errorf("unexpected Bytes error: %v", err)
100 }
101 // Test JSON
102 dec.Reset(bytes.NewReader(b))
103 _, err = dec.WriteToJSON(io.Discard)
104 if !errors.Is(err, ErrRecursion) {
105 t.Errorf("unexpected Reader error: %v", err)
106 }
107 _, err = UnmarshalAsJSON(io.Discard, b)
108 if !errors.Is(err, ErrRecursion) {
109 t.Errorf("unexpected Bytes error: %v", err)
110 }
111 _, err = CopyToJSON(io.Discard, bytes.NewReader(b))
112 if !errors.Is(err, ErrRecursion) {
113 t.Errorf("unexpected Bytes error: %v", err)
114 }
115
116 // Test map recursion...
117 buf.Reset()
118 for range recursionLimit * 2 {
119 enc.WriteMapHeader(1)
120 // Write a key...
121 enc.WriteString("a")
122 }
123 enc.Flush()
124 b = buf.Bytes()
125 dec.Reset(bytes.NewReader(b))
126 _, err = dec.ReadIntf()
127 if !errors.Is(err, ErrRecursion) {
128 t.Errorf("unexpected Reader error: %v", err)
129 }
130 _, _, err = ReadIntfBytes(b)
131 if !errors.Is(err, ErrRecursion) {
132 t.Errorf("unexpected Bytes error: %v", err)
133 }
134
135 // Test ReadMapStrInt using same input
136 dec.Reset(bytes.NewReader(b))
137 err = dec.ReadMapStrIntf(map[string]any{})
138 if !errors.Is(err, ErrRecursion) {
139 t.Errorf("unexpected Reader error: %v", err)
140 }

Callers

nothing calls this directly

Calls 15

WriteArrayHeaderMethod · 0.95
FlushMethod · 0.95
ReadIntfMethod · 0.95
ResetMethod · 0.95
WriteToJSONMethod · 0.95
WriteMapHeaderMethod · 0.95
WriteStringMethod · 0.95
ReadMapStrIntfMethod · 0.95
CopyNextMethod · 0.95
NewReaderFunction · 0.85
NewWriterFunction · 0.85
ReadIntfBytesFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…