• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

shogo82148 / ridgenative / 29196568061

12 Jul 2026 02:36PM UTC coverage: 74.867% (+0.3%) from 74.561%
29196568061

push

github

web-flow
Merge pull request #116 from shogo82148/support-json-v2

migrate encoding/json/v2

215 of 311 new or added lines in 9 files covered. (69.13%)

703 of 939 relevant lines covered (74.87%)

4.04 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

74.19
/error_capturing_reader.go
1
//go:build !go1.27
2

3
package ridgenative
4

5
import (
6
        "encoding/base64"
7
        "encoding/json"
8
        "errors"
9
        "io"
10
        "net/http"
11
)
12

13
// errorCapturingReader is a reader that captures the first error returned by the underlying reader.
14
type errorCapturingReader struct {
15
        reader  io.ReadCloser
16
        err     error
17
        trailer http.Header
18
}
19

20
func newErrorCapturingReader(r io.ReadCloser) *errorCapturingReader {
5✔
21
        return &errorCapturingReader{
5✔
22
                reader:  r,
5✔
23
                trailer: http.Header{},
5✔
24
        }
5✔
25
}
5✔
26

27
func (r *errorCapturingReader) Read(p []byte) (int, error) {
5✔
28
        if r.reader == nil {
5✔
NEW
29
                return 0, io.EOF
×
NEW
30
        }
×
31
        if r.err != nil {
5✔
NEW
32
                return 0, r.err
×
NEW
33
        }
×
34

35
        n, err := r.reader.Read(p)
5✔
36
        if err != nil && !errors.Is(err, io.EOF) {
10✔
37
                // capture the error
5✔
38
                lambdaErr := lambdaErrorResponse(err)
5✔
39
                body, err := json.Marshal(lambdaErr)
5✔
40
                if err != nil {
5✔
NEW
41
                        body = []byte(`{"message":"failed to marshal lambda error response","type":"error"}`)
×
NEW
42
                }
×
43
                r.trailer.Set(trailerLambdaErrorType, lambdaErr.Type)
5✔
44
                r.trailer.Set(trailerLambdaErrorBody, base64.StdEncoding.EncodeToString(body))
5✔
45
                r.err = io.EOF
5✔
46
                return n, io.EOF
5✔
47
        }
48
        return n, err
5✔
49
}
50

51
func (r *errorCapturingReader) Close() error {
5✔
52
        if r.reader == nil {
5✔
NEW
53
                return nil
×
NEW
54
        }
×
55
        return r.reader.Close()
5✔
56
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc