初始化仓库
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestBuildReferenceViewRequest_ModeSelection(t *testing.T) {
|
||||
ws := t.TempDir()
|
||||
file := filepath.Join(ws, "svc", "handler.go")
|
||||
dir := filepath.Join(ws, "docs", "spec.v1")
|
||||
if err := os.MkdirAll(filepath.Dir(file), 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.WriteFile(file, []byte("package main\n"), 0o644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.MkdirAll(dir, 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
cases := []struct {
|
||||
name string
|
||||
raw string
|
||||
mode referenceViewMode
|
||||
}{
|
||||
{name: "file", raw: file, mode: referenceViewFileHead},
|
||||
{name: "line", raw: file + ":12", mode: referenceViewContext},
|
||||
{name: "linecol", raw: file + ":12:2", mode: referenceViewContext},
|
||||
{name: "range", raw: file + ":8-17", mode: referenceViewRange},
|
||||
{name: "hash", raw: file + "#L12", mode: referenceViewContext},
|
||||
{name: "markdown", raw: "[handler.go](" + file + "#L12)", mode: referenceViewContext},
|
||||
{name: "dir", raw: dir, mode: referenceViewDir},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
req, err := buildReferenceViewRequest(tc.raw, ws)
|
||||
if err != nil {
|
||||
t.Fatalf("buildReferenceViewRequest error: %v", err)
|
||||
}
|
||||
if req.Mode != tc.mode {
|
||||
t.Fatalf("mode = %q, want %q", req.Mode, tc.mode)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildReferenceViewRequest_DirectoryWithLocationFails(t *testing.T) {
|
||||
ws := t.TempDir()
|
||||
dir := filepath.Join(ws, "docs", "spec.v1")
|
||||
if err := os.MkdirAll(dir, 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, err := buildReferenceViewRequest(dir+":12", ws); err == nil {
|
||||
t.Fatal("expected error for directory location reference")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenderReferenceView_FileHeadAndContext(t *testing.T) {
|
||||
ws := t.TempDir()
|
||||
file := filepath.Join(ws, "svc", "handler.go")
|
||||
if err := os.MkdirAll(filepath.Dir(file), 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
content := strings.Join([]string{
|
||||
"package svc",
|
||||
"",
|
||||
"func one() {}",
|
||||
"func two() {}",
|
||||
"func three() {}",
|
||||
}, "\n")
|
||||
if err := os.WriteFile(file, []byte(content), 0o644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
headReq, err := buildReferenceViewRequest(file, ws)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
head, err := renderReferenceView(headReq)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(head, "```go") {
|
||||
t.Fatalf("head output = %q, want go code fence", head)
|
||||
}
|
||||
if !strings.Contains(head, "package svc") {
|
||||
t.Fatalf("head output = %q, want file content", head)
|
||||
}
|
||||
|
||||
ctxReq, err := buildReferenceViewRequest(file+":4", ws)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
ctx, err := renderReferenceView(ctxReq)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(ctx, "func two() {}") {
|
||||
t.Fatalf("context output = %q, want nearby line", ctx)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRenderReferenceView_DirectoryList(t *testing.T) {
|
||||
ws := t.TempDir()
|
||||
dir := filepath.Join(ws, "docs", "spec.v1")
|
||||
if err := os.MkdirAll(filepath.Join(dir, "subdir"), 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.WriteFile(filepath.Join(dir, "alpha.md"), []byte("x"), 0o644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
req, err := buildReferenceViewRequest(dir, ws)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
out, err := renderReferenceView(req)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !strings.Contains(out, "📁 docs/spec.v1/") {
|
||||
t.Fatalf("directory output = %q, want title", out)
|
||||
}
|
||||
if !strings.Contains(out, "- alpha.md") || !strings.Contains(out, "- subdir/") {
|
||||
t.Fatalf("directory output = %q, want entries", out)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user