mirror of
https://github.com/golang/go
synced 2024-11-18 18:44:42 -07:00
964f0f559c
On big corpuses, the indexer was spending most of its time waiting for filesystem operations (especially with network filesystems) and not actually indexing. This keeps the filesystem busy and indexer running in different goroutines. Also, add a hook to let godoc hosts disable indexing of certain directories. And finally, start adding tests for godoc, which required fleshing out (and testing) the mapfs code. R=golang-dev, adg, bgarcia CC=golang-dev https://golang.org/cl/21520045
57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
// 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.
|
|
|
|
package godoc
|
|
|
|
import (
|
|
"reflect"
|
|
"strings"
|
|
"testing"
|
|
|
|
"code.google.com/p/go.tools/godoc/vfs/mapfs"
|
|
)
|
|
|
|
func TestIndex(t *testing.T) {
|
|
c := NewCorpus(mapfs.New(map[string]string{
|
|
"src/pkg/foo/foo.go": `// Package foo is an example.
|
|
package foo
|
|
|
|
// Foo is stuff.
|
|
type Foo struct{}
|
|
|
|
func New() *Foo {
|
|
return new(Foo)
|
|
}
|
|
`,
|
|
"src/pkg/bar/bar.go": `// Package bar is another example to test races.
|
|
package bar
|
|
`,
|
|
"src/pkg/skip/skip.go": `// Package skip should be skipped.
|
|
package skip
|
|
func Skip() {}
|
|
`,
|
|
}))
|
|
c.IndexEnabled = true
|
|
c.IndexDirectory = func(dir string) bool {
|
|
return !strings.Contains(dir, "skip")
|
|
}
|
|
|
|
if err := c.Init(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
c.UpdateIndex()
|
|
ix, _ := c.CurrentIndex()
|
|
if ix == nil {
|
|
t.Fatal("no index")
|
|
}
|
|
t.Logf("Got: %#v", ix)
|
|
wantStats := Statistics{Bytes: 179, Files: 2, Lines: 11, Words: 5, Spots: 7}
|
|
if !reflect.DeepEqual(ix.Stats(), wantStats) {
|
|
t.Errorf("Stats = %#v; want %#v", ix.Stats(), wantStats)
|
|
}
|
|
if _, ok := ix.words["Skip"]; ok {
|
|
t.Errorf("the word Skip was found; expected it to be skipped")
|
|
}
|
|
}
|