|  | // Copyright 2018 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 godoc | 
|  |  | 
|  | import ( | 
|  | "testing" | 
|  |  | 
|  | "golang.org/x/tools/godoc/vfs/mapfs" | 
|  | ) | 
|  |  | 
|  | // TestIgnoredGoFiles tests the scenario where a folder has no .go or .c files, | 
|  | // but has an ignored go file. | 
|  | func TestIgnoredGoFiles(t *testing.T) { | 
|  | packagePath := "github.com/package" | 
|  | packageComment := "main is documented in an ignored .go file" | 
|  |  | 
|  | c := NewCorpus(mapfs.New(map[string]string{ | 
|  | "src/" + packagePath + "/ignored.go": `// +build ignore | 
|  |  | 
|  | // ` + packageComment + ` | 
|  | package main`})) | 
|  | srv := &handlerServer{ | 
|  | p: &Presentation{ | 
|  | Corpus: c, | 
|  | }, | 
|  | c: c, | 
|  | } | 
|  | pInfo := srv.GetPageInfo("/src/"+packagePath, packagePath, NoFiltering, "linux", "amd64") | 
|  |  | 
|  | if pInfo.PDoc == nil { | 
|  | t.Error("pInfo.PDoc = nil; want non-nil.") | 
|  | } else { | 
|  | if got, want := pInfo.PDoc.Doc, packageComment+"\n"; got != want { | 
|  | t.Errorf("pInfo.PDoc.Doc = %q; want %q.", got, want) | 
|  | } | 
|  | if got, want := pInfo.PDoc.Name, "main"; got != want { | 
|  | t.Errorf("pInfo.PDoc.Name = %q; want %q.", got, want) | 
|  | } | 
|  | if got, want := pInfo.PDoc.ImportPath, packagePath; got != want { | 
|  | t.Errorf("pInfo.PDoc.ImportPath = %q; want %q.", got, want) | 
|  | } | 
|  | } | 
|  | if pInfo.FSet == nil { | 
|  | t.Error("pInfo.FSet = nil; want non-nil.") | 
|  | } | 
|  | } | 
|  |  | 
|  | func TestIssue5247(t *testing.T) { | 
|  | const packagePath = "example.com/p" | 
|  | c := NewCorpus(mapfs.New(map[string]string{ | 
|  | "src/" + packagePath + "/p.go": `package p | 
|  |  | 
|  | //line notgen.go:3 | 
|  | // F doc //line 1 should appear | 
|  | // line 2 should appear | 
|  | func F() | 
|  | //line foo.go:100`})) // No newline at end to check corner cases. | 
|  |  | 
|  | srv := &handlerServer{ | 
|  | p: &Presentation{Corpus: c}, | 
|  | c: c, | 
|  | } | 
|  | pInfo := srv.GetPageInfo("/src/"+packagePath, packagePath, 0, "linux", "amd64") | 
|  | if got, want := pInfo.PDoc.Funcs[0].Doc, "F doc //line 1 should appear\nline 2 should appear\n"; got != want { | 
|  | t.Errorf("pInfo.PDoc.Funcs[0].Doc = %q; want %q", got, want) | 
|  | } | 
|  | } |