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

mlange-42 / modo / 12810176069

16 Jan 2025 01:43PM CUT coverage: 36.569% (+1.8%) from 34.803%
12810176069

push

github

web-flow
Implement re-exports on package level (#42)

235 of 505 new or added lines in 11 files covered. (46.53%)

41 existing lines in 4 files now uncovered.

437 of 1195 relevant lines covered (36.57%)

2.65 hits per line

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

82.35
/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) {
4✔
17
        newElems := appendNew(elems, p.Name)
4✔
18
        for _, pkg := range p.Packages {
6✔
19
                proc.collectExports(pkg, newElems)
2✔
20
        }
2✔
21

22
        if proc.UseExports {
8✔
23
                p.Exports, p.Description = proc.parseExports(p.Description, newElems, true)
4✔
24
                return
4✔
25
        }
4✔
26

NEW
27
        p.Exports = make([]*PackageExport, 0, len(p.Packages)+len(p.Modules))
×
NEW
28
        for _, pkg := range p.Packages {
×
NEW
29
                p.Exports = append(p.Exports, &PackageExport{Short: []string{pkg.Name}, Long: appendNew(newElems, pkg.Name)})
×
NEW
30
        }
×
NEW
31
        for _, mod := range p.Modules {
×
NEW
32
                p.Exports = append(p.Exports, &PackageExport{Short: []string{mod.Name}, Long: appendNew(newElems, mod.Name)})
×
NEW
33
        }
×
34
}
35

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

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