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

mlange-42 / modo / 12810588007

16 Jan 2025 02:06PM CUT coverage: 36.851% (+0.3%) from 36.569%
12810588007

push

github

web-flow
Error on no exports, silence help (#43)

20 of 33 new or added lines in 4 files covered. (60.61%)

2 existing lines in 2 files now uncovered.

447 of 1213 relevant lines covered (36.85%)

2.66 hits per line

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

83.33
/document/exports.go
1
package document
2

3
import (
4
        "bufio"
5
        "strings"
6
)
7

8
const exportsMarker = "Exports:"
9
const exportsPrefix = "- "
10

11
type PackageExport struct {
12
        Short []string
13
        Long  []string
14
}
15

16
func (proc *Processor) collectExports(p *Package, elems []string) bool {
4✔
17
        anyExports := false
4✔
18

4✔
19
        newElems := appendNew(elems, p.Name)
4✔
20
        for _, pkg := range p.Packages {
6✔
21
                if anyHere := proc.collectExports(pkg, newElems); anyHere {
4✔
22
                        anyExports = true
2✔
23
                }
2✔
24
        }
25

26
        if proc.UseExports {
8✔
27
                var anyHere bool
4✔
28
                p.Exports, p.Description, anyHere = proc.parseExports(p.Description, newElems, true)
4✔
29
                if anyHere {
8✔
30
                        anyExports = true
4✔
31
                }
4✔
32
                return anyExports
4✔
33
        }
34

35
        p.Exports = make([]*PackageExport, 0, len(p.Packages)+len(p.Modules))
×
36
        for _, pkg := range p.Packages {
×
37
                p.Exports = append(p.Exports, &PackageExport{Short: []string{pkg.Name}, Long: appendNew(newElems, pkg.Name)})
×
38
        }
×
39
        for _, mod := range p.Modules {
×
40
                p.Exports = append(p.Exports, &PackageExport{Short: []string{mod.Name}, Long: appendNew(newElems, mod.Name)})
×
41
        }
×
42

NEW
43
        return anyExports
×
44
}
45

46
func (proc *Processor) parseExports(pkgDocs string, basePath []string, remove bool) ([]*PackageExport, string, bool) {
5✔
47
        scanner := bufio.NewScanner(strings.NewReader(pkgDocs))
5✔
48

5✔
49
        outText := strings.Builder{}
5✔
50
        exports := []*PackageExport{}
5✔
51
        anyExports := false
5✔
52
        isExport := false
5✔
53
        exportIndex := 0
5✔
54
        for scanner.Scan() {
42✔
55
                origLine := scanner.Text()
37✔
56
                line := strings.TrimSpace(origLine)
37✔
57
                if isExport {
58✔
58
                        if exportIndex == 0 && line == "" {
22✔
59
                                continue
1✔
60
                        }
61
                        if !strings.HasPrefix(line, exportsPrefix) {
22✔
62
                                outText.WriteString(line)
2✔
63
                                outText.WriteRune('\n')
2✔
64
                                isExport = false
2✔
65
                                continue
2✔
66
                        }
67
                        short := line[len(exportsPrefix):]
18✔
68
                        parts := strings.Split(short, ".")
18✔
69
                        exports = append(exports, &PackageExport{Short: parts, Long: appendNew(basePath, parts...)})
18✔
70
                        anyExports = true
18✔
71
                        exportIndex++
18✔
72
                } else {
16✔
73
                        if line == exportsMarker {
22✔
74
                                isExport = true
6✔
75
                                exportIndex = 0
6✔
76
                                continue
6✔
77
                        }
78
                        outText.WriteString(line)
10✔
79
                        outText.WriteRune('\n')
10✔
80
                }
81
        }
82
        if err := scanner.Err(); err != nil {
5✔
83
                panic(err)
×
84
        }
85
        if remove {
10✔
86
                return exports, outText.String(), anyExports
5✔
87
        }
5✔
NEW
88
        return exports, pkgDocs, anyExports
×
89
}
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

© 2025 Coveralls, Inc