import (
"bytes"
"fmt"
+ "go/token"
"internal/testenv"
"io/fs"
"os"
< os
< os/signal;
+ io/fs
+ < embed;
+
unicode, fmt !< os, os/signal;
os/signal, STR
}
var imports []string
var haveImport = map[string]bool{}
+ fset := token.NewFileSet()
for _, file := range files {
name := file.Name()
if name == "slice_go14.go" || name == "slice_go18.go" {
if !strings.HasSuffix(name, ".go") || strings.HasSuffix(name, "_test.go") {
continue
}
- var info fileInfo
- info.name = filepath.Join(dir, name)
+ info := fileInfo{
+ name: filepath.Join(dir, name),
+ fset: fset,
+ }
f, err := os.Open(info.name)
if err != nil {
return nil, err
}
}
}
+
+// TestFindImports tests that findImports works. See #43249.
+func TestFindImports(t *testing.T) {
+ imports, err := findImports("go/build")
+ if err != nil {
+ t.Fatal(err)
+ }
+ t.Logf("go/build imports %q", imports)
+ want := []string{"bytes", "os", "path/filepath", "strings"}
+wantLoop:
+ for _, w := range want {
+ for _, imp := range imports {
+ if imp == w {
+ continue wantLoop
+ }
+ }
+ t.Errorf("expected to find %q in import list", w)
+ }
+}