aboutsummaryrefslogtreecommitdiff
path: root/internal/testing/sample/sample.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/testing/sample/sample.go')
-rw-r--r--internal/testing/sample/sample.go26
1 files changed, 21 insertions, 5 deletions
diff --git a/internal/testing/sample/sample.go b/internal/testing/sample/sample.go
index f08d3bfa..5c6af994 100644
--- a/internal/testing/sample/sample.go
+++ b/internal/testing/sample/sample.go
@@ -379,13 +379,29 @@ func constructFullPath(modulePath, suffix string) string {
// Documentation returns a Documentation value for the given Go source.
// It panics if there are errors parsing or encoding the source.
func Documentation(goos, goarch, fileContents string) *internal.Documentation {
+ return documentation(goos, goarch, map[string]string{"sample.go": fileContents})
+}
+
+// DocumentationWithExamples returns a Documentation value for the given package
+// documentation and example code.
+// It panics if there are errors parsing or encoding the source.
+func DocumentationWithExamples(goos, goarch, pkgDoc, exampleCode string) *internal.Documentation {
+ return documentation(goos, goarch, map[string]string{
+ "pkg.go": "// Package pkg is a package.\npackage pkg\n" + pkgDoc,
+ "pkg_test.go": "package pkg\n" + exampleCode,
+ })
+}
+
+func documentation(goos, goarch string, files map[string]string) *internal.Documentation {
fset := token.NewFileSet()
- pf, err := parser.ParseFile(fset, "sample.go", fileContents, parser.ParseComments)
- if err != nil {
- panic(err)
- }
docPkg := godoc.NewPackage(fset, nil)
- docPkg.AddFile(pf, true)
+ for name, contents := range files {
+ pf, err := parser.ParseFile(fset, name, contents, parser.ParseComments)
+ if err != nil {
+ panic(err)
+ }
+ docPkg.AddFile(pf, true)
+ }
src, err := docPkg.Encode(context.Background())
if err != nil {
panic(err)