Test: doc snippets must be compiled Examples

This commit is contained in:
ZacharyZhang-NY committed 2026-10-05 13:21:10 -04:00
1 parent 2ccecd5c16
commit 332d38b9d8
1 file changed
+58
+58
View File
@@ -0,0 +1,58 @@
package mujica
import (
"os"
"path/filepath"
"regexp"
"strings"
"testing"
)
var (
docsGoBlock = regexp.MustCompile("(?s)```go\n(.*?)```")
docsSpace = regexp.MustCompile(`\s+`)
)
// TestDocSnippetsAreCompiledExamples keeps every doc's first Go block inside a compiled Example.
func TestDocSnippetsAreCompiledExamples(t *testing.T) {
examples, err := filepath.Glob("example_*_test.go")
if err != nil {
t.Fatal(err)
}
var all strings.Builder
for _, f := range examples {
b, err := os.ReadFile(f)
if err != nil {
t.Fatal(err)
}
all.Write(b)
}
compiled := docsSpace.ReplaceAllString(all.String(), "")
docs, err := filepath.Glob("docs/components/*.md")
if err != nil {
t.Fatal(err)
}
if len(docs) != 100 {
t.Fatalf("%d component docs, want 100", len(docs))
}
for _, d := range docs {
b, err := os.ReadFile(d)
if err != nil {
t.Fatal(err)
}
m := docsGoBlock.FindSubmatch(b)
if m == nil {
t.Errorf("%s has no Go example", d)
continue
}
for _, line := range strings.Split(string(m[1]), "\n") {
s := strings.TrimSpace(line)
if s == "" || strings.HasPrefix(s, "//") {
continue
}
if !strings.Contains(compiled, docsSpace.ReplaceAllString(s, "")) {
t.Errorf("%s: %q is not in any compiled Example", d, s)
}
}
}
}