Source file
src/go/doc/comment_test.go
Documentation: go/doc
1
2
3
4
5 package doc
6
7 import (
8 "bytes"
9 "go/parser"
10 "go/token"
11 "internal/diff"
12 "testing"
13 )
14
15 func TestComment(t *testing.T) {
16 fset := token.NewFileSet()
17 pkgs, err := parser.ParseDir(fset, "testdata/pkgdoc", nil, parser.ParseComments)
18 if err != nil {
19 t.Fatal(err)
20 }
21 if pkgs["pkgdoc"] == nil {
22 t.Fatal("missing package pkgdoc")
23 }
24 pkg := New(pkgs["pkgdoc"], "testdata/pkgdoc", 0)
25
26 var (
27 input = "[T] and [U] are types, and [T.M] is a method, but [V] is a broken link. [rand.Int] and [crand.Reader] are things. [G.M1] and [G.M2] are generic methods.\n"
28 wantHTML = `<p><a href="#T">T</a> and <a href="#U">U</a> are types, and <a href="#T.M">T.M</a> is a method, but [V] is a broken link. <a href="/math/rand#Int">rand.Int</a> and <a href="/crypto/rand#Reader">crand.Reader</a> are things. <a href="#G.M1">G.M1</a> and <a href="#G.M2">G.M2</a> are generic methods.` + "\n"
29 wantOldHTML = "<p>[T] and [U] are <i>types</i>, and [T.M] is a method, but [V] is a broken link. [rand.Int] and [crand.Reader] are things. [G.M1] and [G.M2] are generic methods.\n"
30 wantMarkdown = "[T](#T) and [U](#U) are types, and [T.M](#T.M) is a method, but \\[V] is a broken link. [rand.Int](/math/rand#Int) and [crand.Reader](/crypto/rand#Reader) are things. [G.M1](#G.M1) and [G.M2](#G.M2) are generic methods.\n"
31 wantText = "T and U are types, and T.M is a method, but [V] is a broken link. rand.Int and\ncrand.Reader are things. G.M1 and G.M2 are generic methods.\n"
32 wantOldText = "[T] and [U] are types, and [T.M] is a method, but [V] is a broken link.\n[rand.Int] and [crand.Reader] are things. [G.M1] and [G.M2] are generic methods.\n"
33 wantSynopsis = "T and U are types, and T.M is a method, but [V] is a broken link."
34 wantOldSynopsis = "[T] and [U] are types, and [T.M] is a method, but [V] is a broken link."
35 )
36
37 if b := pkg.HTML(input); string(b) != wantHTML {
38 t.Errorf("%s", diff.Diff("pkg.HTML", b, "want", []byte(wantHTML)))
39 }
40 if b := pkg.Markdown(input); string(b) != wantMarkdown {
41 t.Errorf("%s", diff.Diff("pkg.Markdown", b, "want", []byte(wantMarkdown)))
42 }
43 if b := pkg.Text(input); string(b) != wantText {
44 t.Errorf("%s", diff.Diff("pkg.Text", b, "want", []byte(wantText)))
45 }
46 if b := pkg.Synopsis(input); b != wantSynopsis {
47 t.Errorf("%s", diff.Diff("pkg.Synopsis", []byte(b), "want", []byte(wantText)))
48 }
49
50 var buf bytes.Buffer
51
52 buf.Reset()
53 ToHTML(&buf, input, map[string]string{"types": ""})
54 if b := buf.Bytes(); string(b) != wantOldHTML {
55 t.Errorf("%s", diff.Diff("ToHTML", b, "want", []byte(wantOldHTML)))
56 }
57
58 buf.Reset()
59 ToText(&buf, input, "", "\t", 80)
60 if b := buf.Bytes(); string(b) != wantOldText {
61 t.Errorf("%s", diff.Diff("ToText", b, "want", []byte(wantOldText)))
62 }
63
64 if b := Synopsis(input); b != wantOldSynopsis {
65 t.Errorf("%s", diff.Diff("Synopsis", []byte(b), "want", []byte(wantOldText)))
66 }
67 }
68
View as plain text