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

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