|
- // Copyright 2013 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 or at
- // https://developers.google.com/open-source/licenses/bsd.
-
- package doc
-
- import (
- "go/ast"
- "testing"
- )
-
- var badSynopsis = []string{
- "+build !release",
- "COPYRIGHT Jimmy Bob",
- "### Markdown heading",
- "-*- indent-tabs-mode: nil -*-",
- "vim:set ts=2 sw=2 et ai ft=go:",
- }
-
- func TestBadSynopsis(t *testing.T) {
- for _, s := range badSynopsis {
- if synopsis(s) != "" {
- t.Errorf(`synopsis(%q) did not return ""`, s)
- }
- }
- }
-
- const readme = `
- $ go get github.com/user/repo/pkg1
- [foo](http://gopkgdoc.appspot.com/pkg/github.com/user/repo/pkg2)
- [foo](http://go.pkgdoc.org/github.com/user/repo/pkg3)
- [foo](http://godoc.org/github.com/user/repo/pkg4)
- <http://go.pkgdoc.org/github.com/user/repo/pkg5>
- [foo](http://godoc.org/github.com/user/repo/pkg6#Export)
- http://gowalker.org/github.com/user/repo/pkg7
- Build Status: [![Build Status](https://drone.io/github.com/user/repo1/status.png)](https://drone.io/github.com/user/repo1/latest)
- 'go get example.org/package1' will install package1.
- (http://go.pkgdoc.org/example.org/package2 "Package2's documentation on GoPkgDoc").
- import "example.org/package3"
- `
-
- var expectedReferences = []string{
- "github.com/user/repo/pkg1",
- "github.com/user/repo/pkg2",
- "github.com/user/repo/pkg3",
- "github.com/user/repo/pkg4",
- "github.com/user/repo/pkg5",
- "github.com/user/repo/pkg6",
- "github.com/user/repo/pkg7",
- "github.com/user/repo1",
- "example.org/package1",
- "example.org/package2",
- "example.org/package3",
- }
-
- func TestReferences(t *testing.T) {
- references := make(map[string]bool)
- addReferences(references, []byte(readme))
- for _, r := range expectedReferences {
- if !references[r] {
- t.Errorf("missing %s", r)
- }
- delete(references, r)
- }
- for r := range references {
- t.Errorf("extra %s", r)
- }
- }
-
- var simpleImporterTests = []struct {
- path string
- name string
- }{
- // Last element with .suffix removed.
- {"example.com/user/name.git", "name"},
- {"example.com/user/name.svn", "name"},
- {"example.com/user/name.hg", "name"},
- {"example.com/user/name.bzr", "name"},
- {"example.com/name.v0", "name"},
- {"example.com/user/repo/name.v11", "name"},
-
- // Last element with "go" prefix or suffix removed.
- {"github.com/user/go-name", "name"},
- {"github.com/user/go.name", "name"},
- {"github.com/user/name.go", "name"},
- {"github.com/user/name-go", "name"},
-
- // Special cases for popular repos.
- {"code.google.com/p/biogo.name", "name"},
- {"code.google.com/p/google-api-go-client/name/v3", "name"},
-
- // Use last element of path.
- {"example.com/user/name.other", "name.other"},
- {"example.com/.v0", ".v0"},
- {"example.com/user/repo.v2/name", "name"},
- {"github.com/user/namev0", "namev0"},
- {"github.com/user/goname", "goname"},
- {"github.com/user/namego", "namego"},
- {"github.com/user/name", "name"},
- {"name", "name"},
- {"user/name", "name"},
- }
-
- func TestSimpleImporter(t *testing.T) {
- for _, tt := range simpleImporterTests {
- m := make(map[string]*ast.Object)
- obj, _ := simpleImporter(m, tt.path)
- if obj.Name != tt.name {
- t.Errorf("simpleImporter(%q) = %q, want %q", tt.path, obj.Name, tt.name)
- }
- }
- }
|