go.tools/godoc: sanitize function signatures for object index
Fixes golang/go#7703.
LGTM=bgarcia
R=bgarcia
CC=golang-codereviews
https://golang.org/cl/84410045
diff --git a/godoc/godoc_test.go b/godoc/godoc_test.go
index 955f2f8..76ce946 100644
--- a/godoc/godoc_test.go
+++ b/godoc/godoc_test.go
@@ -16,8 +16,8 @@
{"/src/pkg/fmt", "pkg/fmt"},
{"/fmt", "pkg/fmt"},
} {
- if got, want := pkgLinkFunc(tc.path), tc.want; got != want {
- t.Errorf("pkgLinkFunc(%v) = %v; want %v", tc.path, got, want)
+ if got := pkgLinkFunc(tc.path); got != tc.want {
+ t.Errorf("pkgLinkFunc(%v) = %v; want %v", tc.path, got, tc.want)
}
}
}
@@ -38,8 +38,8 @@
{"fmt/print.go", 0, 0, 0, "/src/pkg/fmt/print.go"},
{"fmt/print.go", 0, 1, 5, "/src/pkg/fmt/print.go?s=1:5#L1"},
} {
- if got, want := srcPosLinkFunc(tc.src, tc.line, tc.low, tc.high), tc.want; got != want {
- t.Errorf("srcLinkFunc(%v, %v, %v, %v) = %v; want %v", tc.src, tc.line, tc.low, tc.high, got, want)
+ if got := srcPosLinkFunc(tc.src, tc.line, tc.low, tc.high); got != tc.want {
+ t.Errorf("srcLinkFunc(%v, %v, %v, %v) = %v; want %v", tc.src, tc.line, tc.low, tc.high, got, tc.want)
}
}
}
@@ -54,8 +54,8 @@
{"/fmt/print.go", "/src/pkg/fmt/print.go"},
{"fmt/print.go", "/src/pkg/fmt/print.go"},
} {
- if got, want := srcLinkFunc(tc.src), tc.want; got != want {
- t.Errorf("srcLinkFunc(%v) = %v; want %v", tc.src, got, want)
+ if got := srcLinkFunc(tc.src); got != tc.want {
+ t.Errorf("srcLinkFunc(%v) = %v; want %v", tc.src, got, tc.want)
}
}
}
@@ -72,8 +72,8 @@
{"src/pkg/fmt/print.go", "EOF", 33, "/src/pkg/fmt/print.go?h=EOF#L33"},
{"src/pkg/fmt/print.go", "a%3f+%26b", 1, "/src/pkg/fmt/print.go?h=a%3f+%26b#L1"},
} {
- if got, want := queryLinkFunc(tc.src, tc.query, tc.line), tc.want; got != want {
- t.Errorf("queryLinkFunc(%v, %v, %v) = %v; want %v", tc.src, tc.query, tc.line, got, want)
+ if got := queryLinkFunc(tc.src, tc.query, tc.line); got != tc.want {
+ t.Errorf("queryLinkFunc(%v, %v, %v) = %v; want %v", tc.src, tc.query, tc.line, got, tc.want)
}
}
}
@@ -87,8 +87,30 @@
{"/src/pkg/fmt", "Sprintf", "/pkg/fmt/#Sprintf"},
{"/src/pkg/fmt", "EOF", "/pkg/fmt/#EOF"},
} {
- if got, want := docLinkFunc(tc.src, tc.ident), tc.want; got != want {
- t.Errorf("docLinkFunc(%v, %v) = %v; want %v", tc.src, tc.ident, got, want)
+ if got := docLinkFunc(tc.src, tc.ident); got != tc.want {
+ t.Errorf("docLinkFunc(%v, %v) = %v; want %v", tc.src, tc.ident, got, tc.want)
+ }
+ }
+}
+
+func TestSanitizeFunc(t *testing.T) {
+ for _, tc := range []struct {
+ src string
+ want string
+ }{
+ {},
+ {"foo", "foo"},
+ {"func f()", "func f()"},
+ {"func f(a int,)", "func f(a int)"},
+ {"func f(a int,\n)", "func f(a int)"},
+ {"func f(\n\ta int,\n\tb int,\n\tc int,\n)", "func f(a int, b int, c int)"},
+ {" ( a, b, c ) ", "(a, b, c)"},
+ {"( a, b, c int, foo bar , )", "(a, b, c int, foo bar)"},
+ {"{ a, b}", "{a, b}"},
+ {"[ a, b]", "[a, b]"},
+ } {
+ if got := sanitizeFunc(tc.src); got != tc.want {
+ t.Errorf("sanitizeFunc(%v) = %v; want %v", tc.src, got, tc.want)
}
}
}