aboutsummaryrefslogtreecommitdiff
path: root/internal/api/render_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/api/render_test.go')
-rw-r--r--internal/api/render_test.go61
1 files changed, 61 insertions, 0 deletions
diff --git a/internal/api/render_test.go b/internal/api/render_test.go
new file mode 100644
index 00000000..d77518d9
--- /dev/null
+++ b/internal/api/render_test.go
@@ -0,0 +1,61 @@
+// Copyright 2026 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package api
+
+import (
+ "context"
+ "go/parser"
+ "go/token"
+ "os"
+ "path/filepath"
+ "strings"
+ "testing"
+
+ "github.com/google/go-cmp/cmp"
+ "golang.org/x/pkgsite/internal/godoc"
+)
+
+func TestRenderDoc(t *testing.T) {
+ src, err := os.ReadFile("testdata/pkg.go")
+ if err != nil {
+ t.Fatal(err)
+ }
+ fset := token.NewFileSet()
+ pf, err := parser.ParseFile(fset, "p.go", src, parser.ParseComments)
+ if err != nil {
+ t.Fatal(err)
+ }
+ docPkg := godoc.NewPackage(fset, nil)
+ docPkg.AddFile(pf, true)
+ gpkg, err := docPkg.Encode(context.Background())
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ decoded, err := godoc.DecodePackage(gpkg)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ dpkg, err := decoded.DocPackage("p", &godoc.ModuleInfo{ModulePath: "p", ResolvedVersion: "v1.0.0"})
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ var sb strings.Builder
+ tr := &textRenderer{fset: decoded.Fset, w: &sb}
+ if err := renderDoc(dpkg, tr); err != nil {
+ t.Fatal(err)
+ }
+ got := strings.TrimSpace(sb.String())
+ wantBytes, err := os.ReadFile(filepath.FromSlash("testdata/text.golden"))
+ if err != nil {
+ t.Fatal(err)
+ }
+ want := strings.TrimSpace(string(wantBytes))
+ if diff := cmp.Diff(want, got); diff != "" {
+ t.Errorf("mismatch (-want +got):\n%s", diff)
+ }
+}