diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index 56942c0fd2b..aa651af718e 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -10,6 +10,7 @@ package build import ( "bytes" "fmt" + "go/token" "internal/testenv" "io/fs" "os" @@ -162,6 +163,9 @@ var depsRules = ` < os < os/signal; + io/fs + < embed; + unicode, fmt !< os, os/signal; os/signal, STR @@ -602,6 +606,7 @@ func findImports(pkg string) ([]string, error) { } 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" { @@ -611,8 +616,10 @@ func findImports(pkg string) ([]string, error) { 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 @@ -840,3 +847,22 @@ func TestStdlibLowercase(t *testing.T) { } } } + +// 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) + } +}