Files
2026-03-15 08:53:52 -07:00

140 lines
3.7 KiB
Go

package docs
import (
"io/fs"
"os"
"path/filepath"
"sort"
"testing"
)
func TestAllMatchesEmbeddedMarkdownSources(t *testing.T) {
dirEntries, err := os.ReadDir("sliver-docs/pages/docs/md")
if err != nil {
t.Fatalf("read markdown source directory: %v", err)
}
expected := make(map[string]string, len(dirEntries))
for _, entry := range dirEntries {
if entry.IsDir() || filepath.Ext(entry.Name()) != ".md" {
continue
}
content, err := os.ReadFile(filepath.Join("sliver-docs/pages/docs/md", entry.Name()))
if err != nil {
t.Fatalf("read markdown source %q: %v", entry.Name(), err)
}
expected[entry.Name()] = string(content)
}
embeddedEntries, err := fs.ReadDir(FS, ".")
if err != nil {
t.Fatalf("read embedded directory: %v", err)
}
if len(embeddedEntries) != len(expected) {
t.Fatalf("embedded entry count = %d, want %d", len(embeddedEntries), len(expected))
}
docs, err := All()
if err != nil {
t.Fatalf("All(): %v", err)
}
if len(docs.Docs) != len(expected) {
t.Fatalf("All() doc count = %d, want %d", len(docs.Docs), len(expected))
}
gotNames := make([]string, 0, len(docs.Docs))
for _, doc := range docs.Docs {
filename := doc.Name + ".md"
gotNames = append(gotNames, doc.Name)
expectedContent, ok := expected[filename]
if !ok {
t.Fatalf("unexpected embedded doc %q", filename)
}
if doc.Content != expectedContent {
t.Fatalf("embedded content mismatch for %q", filename)
}
}
wantNames := make([]string, 0, len(expected))
for filename := range expected {
wantNames = append(wantNames, filename[:len(filename)-len(filepath.Ext(filename))])
}
sort.Strings(gotNames)
sort.Strings(wantNames)
for i := range gotNames {
if gotNames[i] != wantNames[i] {
t.Fatalf("embedded names mismatch at index %d: got %q want %q", i, gotNames[i], wantNames[i])
}
}
}
func TestReadAcceptsDocNameWithoutSuffix(t *testing.T) {
want, err := os.ReadFile(filepath.Join("sliver-docs/pages/docs/md", "Getting Started.md"))
if err != nil {
t.Fatalf("read source doc: %v", err)
}
got, err := Read("Getting Started")
if err != nil {
t.Fatalf("Read(): %v", err)
}
if got != string(want) {
t.Fatal("Read() returned unexpected content")
}
}
func TestAsciinemaFSMatchesEmbeddedSources(t *testing.T) {
dirEntries, err := os.ReadDir("sliver-docs/public/asciinema")
if err != nil {
t.Fatalf("read asciinema source directory: %v", err)
}
expected := make(map[string][]byte, len(dirEntries))
for _, entry := range dirEntries {
if entry.IsDir() || filepath.Ext(entry.Name()) != ".cast" {
continue
}
content, err := os.ReadFile(filepath.Join("sliver-docs/public/asciinema", entry.Name()))
if err != nil {
t.Fatalf("read asciinema source %q: %v", entry.Name(), err)
}
expected[entry.Name()] = content
}
embeddedEntries, err := fs.ReadDir(AsciinemaFS, ".")
if err != nil {
t.Fatalf("read embedded asciinema directory: %v", err)
}
if len(embeddedEntries) != len(expected) {
t.Fatalf("embedded asciinema entry count = %d, want %d", len(embeddedEntries), len(expected))
}
for filename, want := range expected {
got, err := fs.ReadFile(AsciinemaFS, filename)
if err != nil {
t.Fatalf("read embedded asciinema %q: %v", filename, err)
}
if string(got) != string(want) {
t.Fatalf("embedded asciinema mismatch for %q", filename)
}
}
}
func TestReadAsciinemaAcceptsNameWithoutSuffix(t *testing.T) {
want, err := os.ReadFile(filepath.Join("sliver-docs/public/asciinema", "intro.cast"))
if err != nil {
t.Fatalf("read source asciinema: %v", err)
}
got, err := ReadAsciinema("intro")
if err != nil {
t.Fatalf("ReadAsciinema(): %v", err)
}
if string(got) != string(want) {
t.Fatal("ReadAsciinema() returned unexpected content")
}
}