aboutsummaryrefslogtreecommitdiff
path: root/go/packages/packages_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/packages/packages_test.go')
-rw-r--r--go/packages/packages_test.go35
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")
+}