File view with blame information shown in the left gutter beside each line.

barerepo / runner / cmd/barerepo-runner/comments_test.go
67 lines · 1.7kb · master
log files threads runs releases config jump to file t
96966ee barerepo 1mo
1
package main
96966ee barerepo 1mo
2
96966ee barerepo 1mo
3
import (
96966ee barerepo 1mo
4
"os"
96966ee barerepo 1mo
5
"path/filepath"
96966ee barerepo 1mo
6
"strings"
96966ee barerepo 1mo
7
"testing"
96966ee barerepo 1mo
8
)
96966ee barerepo 1mo
9
96966ee barerepo 1mo
10
// Every comment in this tree is one line, which is a standing instruction, so a test holds it.
96966ee barerepo 1mo
11
func TestEveryCommentIsOneLine(t *testing.T) {
96966ee barerepo 1mo
12
root, err := filepath.Abs("../..")
96966ee barerepo 1mo
13
if err != nil {
96966ee barerepo 1mo
14
t.Fatal(err)
96966ee barerepo 1mo
15
}
96966ee barerepo 1mo
16
skip := map[string]bool{".git": true, "plans": true, "misc": true, ".playwright-mcp": true}
96966ee barerepo 1mo
17
err = filepath.WalkDir(root, func(path string, d os.DirEntry, err error) error {
96966ee barerepo 1mo
18
if err != nil {
96966ee barerepo 1mo
19
return nil
96966ee barerepo 1mo
20
}
96966ee barerepo 1mo
21
if d.IsDir() {
96966ee barerepo 1mo
22
if skip[d.Name()] {
96966ee barerepo 1mo
23
return filepath.SkipDir
96966ee barerepo 1mo
24
}
96966ee barerepo 1mo
25
return nil
96966ee barerepo 1mo
26
}
96966ee barerepo 1mo
27
switch filepath.Ext(path) {
96966ee barerepo 1mo
28
case ".go", ".js", ".css":
96966ee barerepo 1mo
29
default:
96966ee barerepo 1mo
30
return nil
96966ee barerepo 1mo
31
}
96966ee barerepo 1mo
32
body, err := os.ReadFile(path)
96966ee barerepo 1mo
33
if err != nil {
96966ee barerepo 1mo
34
return nil
96966ee barerepo 1mo
35
}
96966ee barerepo 1mo
36
where := strings.TrimPrefix(path, root+string(filepath.Separator))
96966ee barerepo 1mo
37
run, start := 0, 0
96966ee barerepo 1mo
38
for i, line := range strings.Split(string(body), "\n") {
96966ee barerepo 1mo
39
if strings.HasPrefix(strings.TrimSpace(line), "//") {
96966ee barerepo 1mo
40
if run == 0 {
96966ee barerepo 1mo
41
start = i + 1
96966ee barerepo 1mo
42
}
96966ee barerepo 1mo
43
run++
96966ee barerepo 1mo
44
continue
96966ee barerepo 1mo
45
}
96966ee barerepo 1mo
46
if run > 1 {
96966ee barerepo 1mo
47
t.Errorf("%s:%d has a %d line comment block, and every comment here is one line", where, start, run)
96966ee barerepo 1mo
48
}
96966ee barerepo 1mo
49
run = 0
96966ee barerepo 1mo
50
}
96966ee barerepo 1mo
51
if run > 1 {
96966ee barerepo 1mo
52
t.Errorf("%s:%d has a %d line comment block, and every comment here is one line", where, start, run)
96966ee barerepo 1mo
53
}
96966ee barerepo 1mo
54
if strings.Contains(string(body), "/*") && filepath.Ext(path) == ".css" {
96966ee barerepo 1mo
55
for i, line := range strings.Split(string(body), "\n") {
96966ee barerepo 1mo
56
open := strings.Contains(line, "/*")
96966ee barerepo 1mo
57
if open && !strings.Contains(line[strings.Index(line, "/*"):], "*/") {
96966ee barerepo 1mo
58
t.Errorf("%s:%d opens a css comment it does not close on the same line", where, i+1)
96966ee barerepo 1mo
59
}
96966ee barerepo 1mo
60
}
96966ee barerepo 1mo
61
}
96966ee barerepo 1mo
62
return nil
96966ee barerepo 1mo
63
})
96966ee barerepo 1mo
64
if err != nil {
96966ee barerepo 1mo
65
t.Fatal(err)
96966ee barerepo 1mo
66
}
96966ee barerepo 1mo
67
}
history · rawbarerepo 0.1.0