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

ghettovoice / abnf / 18524219136

15 Oct 2025 09:25AM UTC coverage: 69.501% (-1.2%) from 70.728%
18524219136

push

github

ghettovoice
Better error format

8 of 44 new or added lines in 2 files covered. (18.18%)

2 existing lines in 1 file now uncovered.

1422 of 2046 relevant lines covered (69.5%)

49.32 hits per line

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

5.13
/errors.go
1
package abnf
2

3
import (
4
        "errors"
5
        "fmt"
6
        "strings"
7
)
8

9
const (
10
        // ErrNotMatched returned by operators if input doesn't match
11
        ErrNotMatched sentinelError = "not matched"
12
)
13

14
type sentinelError string
15

UNCOV
16
func (e sentinelError) Error() string { return string(e) }
×
17

18
type operError struct {
19
        op  string
20
        pos uint
21
        err error
22
}
23

24
func (e *operError) Unwrap() error { return e.err }
30✔
25

NEW
26
func (e *operError) Error() string {
×
NEW
27
        var sb strings.Builder
×
NEW
28
        e.writeError(&sb, 0)
×
NEW
29
        return sb.String()
×
NEW
30
}
×
31

NEW
32
func (e *operError) writeError(sb *strings.Builder, depth int) {
×
NEW
33
        fmt.Fprintf(sb, "operator %q failed at position %d: ", e.op, e.pos)
×
NEW
34

×
NEW
35
        var merr multiError
×
NEW
36
        if errors.As(e.err, &merr) {
×
NEW
37
                merr.writeError(sb, depth)
×
NEW
38
        } else {
×
NEW
39
                sb.WriteString(e.err.Error())
×
UNCOV
40
        }
×
41
}
42

43
type multiError []error
44

45
func (e multiError) Unwrap() []error { return e }
10✔
46

NEW
47
func (e multiError) Error() string {
×
NEW
48
        var sb strings.Builder
×
NEW
49
        e.writeError(&sb, 0)
×
NEW
50
        return sb.String()
×
NEW
51
}
×
52

NEW
53
func (e multiError) writeError(sb *strings.Builder, depth int) {
×
NEW
54
        sb.WriteString("following errors are occurred:\n")
×
NEW
55

×
NEW
56
        for _, err := range e {
×
NEW
57
                var (
×
NEW
58
                        merr multiError
×
NEW
59
                        oerr *operError
×
NEW
60
                )
×
NEW
61
                if errors.As(err, &oerr) {
×
NEW
62
                        sb.WriteString(strings.Repeat("  ", depth+1) + "- ")
×
NEW
63
                        oerr.writeError(sb, depth+1)
×
NEW
64
                        sb.WriteString("\n")
×
NEW
65
                } else if errors.As(err, &merr) {
×
NEW
66
                        merr.writeError(sb, depth+1)
×
NEW
67
                } else {
×
NEW
68
                        sb.WriteString(strings.Repeat("  ", depth+1) + "- " + err.Error() + "\n")
×
NEW
69
                }
×
70
        }
71
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc