| // 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 pkgdoc | |
| import ( | |
| "go/token" | |
| "os" | |
| "runtime" | |
| "sort" | |
| "testing" | |
| "testing/fstest" | |
| ) | |
| func TestNewDirTree(t *testing.T) { | |
| d := newDir(os.DirFS(runtime.GOROOT()), token.NewFileSet(), "src") | |
| processDir(t, d) | |
| } | |
| func processDir(t *testing.T, d *Dir) { | |
| var list []string | |
| for _, child := range d.Dirs { | |
| list = append(list, child.Name()) | |
| // recursively process the lower level | |
| processDir(t, child) | |
| } | |
| if sort.StringsAreSorted(list) == false { | |
| t.Errorf("list: %v is not sorted\n", list) | |
| } | |
| } | |
| func TestIssue45614(t *testing.T) { | |
| fs := fstest.MapFS{ | |
| "src/index/suffixarray/gen.go": { | |
| Data: []byte(`// P1: directory contains a main package | |
| package main | |
| `)}, | |
| "src/index/suffixarray/suffixarray.go": { | |
| Data: []byte(`// P0: directory name matches package name | |
| package suffixarray | |
| `)}, | |
| } | |
| d := newDir(fs, token.NewFileSet(), "src/index/suffixarray") | |
| if got, want := d.Synopsis, "P0: directory name matches package name"; got != want { | |
| t.Errorf("d.Synopsis = %q; want %q", got, want) | |
| } | |
| } | |
| func BenchmarkNewDirectory(b *testing.B) { | |
| if testing.Short() { | |
| b.Skip("not running tests requiring large file scan in short mode") | |
| } | |
| fs := os.DirFS(runtime.GOROOT()) | |
| b.ResetTimer() | |
| b.ReportAllocs() | |
| for tries := 0; tries < b.N; tries++ { | |
| newDir(fs, token.NewFileSet(), "src") | |
| } | |
| } |