diff options
Diffstat (limited to 'go/packages/packages_test.go')
-rw-r--r-- | go/packages/packages_test.go | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/go/packages/packages_test.go b/go/packages/packages_test.go index 6549fd610..796edb6b7 100644 --- a/go/packages/packages_test.go +++ b/go/packages/packages_test.go @@ -1077,6 +1077,10 @@ func testAbsoluteFilenames(t *testing.T, exporter packagestest.Exporter) { "e/e2.go": `package main; import _ "golang.org/fake/c"`, "f/f.go": `package f`, "f/f.s": ``, + "g/g.go": `package g; import _ "embed";` + "\n//go:embed g2.txt\n" + `var s string`, + "g/g2.txt": "hello", + "h/h.go": `package g; import _ "embed";` + "\n//go:embed a*.txt\n" + `var s string`, + "h/aa.txt": "hello", }}}) defer exported.Cleanup() exported.Config.Dir = filepath.Dir(filepath.Dir(exported.File("golang.org/fake", "a/a.go"))) @@ -1103,6 +1107,8 @@ func testAbsoluteFilenames(t *testing.T, exporter packagestest.Exporter) { {"golang.org/fake/subdir/e", "d.go"}, {"golang.org/fake/e", "e.go e2.go"}, {"golang.org/fake/f", "f.go f.s"}, + {"golang.org/fake/g", "g.go g2.txt"}, + {"golang.org/fake/h", "h.go aa.txt"}, // Relative paths {"./a", "a.go"}, {"./b/vendor/a", "a.go"}, @@ -1112,8 +1118,10 @@ func testAbsoluteFilenames(t *testing.T, exporter packagestest.Exporter) { {"./subdir/e", "d.go"}, {"./e", "e.go e2.go"}, {"./f", "f.go f.s"}, + {"./g", "g.go g2.txt"}, + {"./h", "h.go aa.txt"}, } { - exported.Config.Mode = packages.LoadFiles + exported.Config.Mode = packages.LoadFiles | packages.NeedEmbedFiles pkgs, err := packages.Load(exported.Config, test.pattern) if err != nil { t.Errorf("pattern %s: %v", test.pattern, err) @@ -1133,6 +1141,9 @@ func testAbsoluteFilenames(t *testing.T, exporter packagestest.Exporter) { for _, filename := range pkg.OtherFiles { checkFile(filename) } + for _, filename := range pkg.EmbedFiles { + checkFile(filename) + } for _, filename := range pkg.IgnoredFiles { checkFile(filename) } @@ -2233,8 +2244,8 @@ func TestLoadModeStrings(t *testing.T) { "LoadMode(NeedDeps)", }, { - packages.NeedExportsFile, - "LoadMode(NeedExportsFile)", + packages.NeedExportFile, + "LoadMode(NeedExportFile)", }, { packages.NeedTypes, @@ -2253,12 +2264,12 @@ func TestLoadModeStrings(t *testing.T) { "LoadMode(NeedTypesSizes)", }, { - packages.NeedName | packages.NeedExportsFile, - "LoadMode(NeedName|NeedExportsFile)", + packages.NeedName | packages.NeedExportFile, + "LoadMode(NeedName|NeedExportFile)", }, { - packages.NeedName | packages.NeedFiles | packages.NeedCompiledGoFiles | packages.NeedImports | packages.NeedDeps | packages.NeedExportsFile | packages.NeedTypes | packages.NeedSyntax | packages.NeedTypesInfo | packages.NeedTypesSizes, - "LoadMode(NeedName|NeedFiles|NeedCompiledGoFiles|NeedImports|NeedDeps|NeedExportsFile|NeedTypes|NeedSyntax|NeedTypesInfo|NeedTypesSizes)", + packages.NeedName | packages.NeedFiles | packages.NeedCompiledGoFiles | packages.NeedImports | packages.NeedDeps | packages.NeedExportFile | packages.NeedTypes | packages.NeedSyntax | packages.NeedTypesInfo | packages.NeedTypesSizes, + "LoadMode(NeedName|NeedFiles|NeedCompiledGoFiles|NeedImports|NeedDeps|NeedExportFile|NeedTypes|NeedSyntax|NeedTypesInfo|NeedTypesSizes)", }, { packages.NeedName | 8192, @@ -2707,7 +2718,7 @@ func errorMessages(errors []packages.Error) []string { } func srcs(p *packages.Package) []string { - return cleanPaths(append(p.GoFiles[:len(p.GoFiles):len(p.GoFiles)], p.OtherFiles...)) + return cleanPaths(append(append(p.GoFiles[:len(p.GoFiles):len(p.GoFiles)], p.OtherFiles...), p.EmbedFiles...)) } // cleanPaths attempts to reduce path names to stable forms @@ -2832,3 +2843,11 @@ func copyAll(srcPath, dstPath string) error { return nil }) } + +func TestExportFile(t *testing.T) { + // This used to trigger the log.Fatal in loadFromExportData. + // See go.dev/issue/45584. + cfg := new(packages.Config) + cfg.Mode = packages.NeedTypes + packages.Load(cfg, "fmt") +} |