133728e barerepo 1mo
1
package e2e
133728e barerepo 1mo
3
import (
133728e barerepo 1mo
4
"os"
133728e barerepo 1mo
5
"path/filepath"
133728e barerepo 1mo
6
"strings"
133728e barerepo 1mo
7
"testing"
133728e barerepo 1mo
10
// Every comment in this tree is one line, which is a standing instruction, so a test holds it.
133728e barerepo 1mo
11
func TestEveryCommentIsOneLine(t *testing.T) {
133728e barerepo 1mo
12
root, err := filepath.Abs("..")
133728e barerepo 1mo
13
if err != nil {
133728e barerepo 1mo
14
t.Fatal(err)
133728e barerepo 1mo
16
skip := map[string]bool{".git": true, "plans": true, "misc": true, ".playwright-mcp": true}
133728e barerepo 1mo
17
err = filepath.WalkDir(root, func(path string, d os.DirEntry, err error) error {
133728e barerepo 1mo
18
if err != nil {
133728e barerepo 1mo
19
return nil
133728e barerepo 1mo
21
if d.IsDir() {
133728e barerepo 1mo
22
if skip[d.Name()] {
133728e barerepo 1mo
23
return filepath.SkipDir
133728e barerepo 1mo
25
return nil
133728e barerepo 1mo
27
switch filepath.Ext(path) {
133728e barerepo 1mo
28
case ".go", ".js", ".css":
133728e barerepo 1mo
29
default:
133728e barerepo 1mo
30
return nil
133728e barerepo 1mo
32
body, err := os.ReadFile(path)
133728e barerepo 1mo
33
if err != nil {
133728e barerepo 1mo
34
return nil
133728e barerepo 1mo
36
where := strings.TrimPrefix(path, root+string(filepath.Separator))
133728e barerepo 1mo
37
run, start := 0, 0
133728e barerepo 1mo
38
for i, line := range strings.Split(string(body), "\n") {
133728e barerepo 1mo
39
if strings.HasPrefix(strings.TrimSpace(line), "//") {
133728e barerepo 1mo
40
if run == 0 {
133728e barerepo 1mo
41
start = i + 1
133728e barerepo 1mo
43
run++
133728e barerepo 1mo
44
continue
133728e barerepo 1mo
46
if run > 1 {
133728e barerepo 1mo
47
t.Errorf("%s:%d has a %d line comment block, and every comment here is one line", where, start, run)
133728e barerepo 1mo
49
run = 0
133728e barerepo 1mo
51
if run > 1 {
133728e barerepo 1mo
52
t.Errorf("%s:%d has a %d line comment block, and every comment here is one line", where, start, run)
133728e barerepo 1mo
54
if strings.Contains(string(body), "/*") && filepath.Ext(path) == ".css" {
133728e barerepo 1mo
55
for i, line := range strings.Split(string(body), "\n") {
133728e barerepo 1mo
56
open := strings.Contains(line, "/*")
133728e barerepo 1mo
57
if open && !strings.Contains(line[strings.Index(line, "/*"):], "*/") {
133728e barerepo 1mo
58
t.Errorf("%s:%d opens a css comment it does not close on the same line", where, i+1)
133728e barerepo 1mo
62
return nil
133728e barerepo 1mo
63
})
133728e barerepo 1mo
64
if err != nil {
133728e barerepo 1mo
65
t.Fatal(err)