package help import ( "io/fs" "regexp" "strings" "testing" ) // TestEveryPageHasAFile stellt sicher, dass die Liste in help.go und die // Dateien in pages/ zusammenpassen — in beide Richtungen. Eine Seite ohne // Datei gäbe einen Fehler beim Aufruf, eine Datei ohne Listeneintrag wäre // unerreichbar und würde unbemerkt veralten. func TestEveryPageHasAFile(t *testing.T) { listed := map[string]bool{} for _, s := range All() { listed[s.Slug] = true if _, err := s.Markdown(); err != nil { t.Errorf("Seite %q: %v", s.Slug, err) } } files, err := fs.Glob(pagesFS, "pages/*.md") if err != nil { t.Fatal(err) } for _, d := range files { slug := strings.TrimSuffix(strings.TrimPrefix(d, "pages/"), ".md") if !listed[slug] { t.Errorf("Datei %s steht nicht in der Seitenliste", d) } } } // TestInternalLinksLeadToPages prüft jeden Link der Form (/hilfe/…) in // allen Seiten. Wird eine Seite umbenannt, fällt ein vergessener Verweis hier // auf statt erst als 404 beim Lesen. func TestInternalLinksLeadToPages(t *testing.T) { link := regexp.MustCompile(`\(/hilfe/([a-z0-9-]+)\)`) for _, s := range All() { md, err := s.Markdown() if err != nil { t.Fatal(err) } for _, hits := range link.FindAllStringSubmatch(md, -1) { if _, ok := Find(hits[1]); !ok { t.Errorf("Seite %q verlinkt auf unbekannte Hilfeseite %q", s.Slug, hits[1]) } } } } func TestFindUnknownPage(t *testing.T) { if _, ok := Find("gibt-es-nicht"); ok { t.Error("Finde meldet eine Seite, die es nicht gibt") } } func TestRenderTablesAndNoRawHTML(t *testing.T) { html, err := Render("| a | b |\n|---|---|\n| 1 | 2 |\n\n") if err != nil { t.Fatal(err) } if !strings.Contains(html, "