From: AN Long Date: Mon, 1 Sep 2025 14:00:45 +0000 (+0900) Subject: go/build: don't invoke go command when setting UseAllFiles X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=997215446134152d8c3c53b3d052032475ef7cfa;p=gostls13.git go/build: don't invoke go command when setting UseAllFiles Fixes #68556 Change-Id: I36b08577243a6b3a13b3adef116411d73a2d3428 Reviewed-on: https://go-review.googlesource.com/c/go/+/700337 Reviewed-by: Carlos Amedee Reviewed-by: Cherry Mui Reviewed-by: Emmanuel Odeke LUCI-TryBot-Result: Go LUCI --- diff --git a/src/go/build/build.go b/src/go/build/build.go index 68fb8dbbd7..157461d1af 100644 --- a/src/go/build/build.go +++ b/src/go/build/build.go @@ -1139,7 +1139,7 @@ func (ctxt *Context) importGo(p *Package, path, srcDir string, mode ImportMode) // we must not being doing special things like AllowBinary or IgnoreVendor, // and all the file system callbacks must be nil (we're meant to use the local file system). if mode&AllowBinary != 0 || mode&IgnoreVendor != 0 || - ctxt.JoinPath != nil || ctxt.SplitPathList != nil || ctxt.IsAbsPath != nil || ctxt.IsDir != nil || ctxt.HasSubdir != nil || ctxt.ReadDir != nil || ctxt.OpenFile != nil || !slices.Equal(ctxt.ToolTags, defaultToolTags) || !slices.Equal(ctxt.ReleaseTags, defaultReleaseTags) { + ctxt.JoinPath != nil || ctxt.SplitPathList != nil || ctxt.IsAbsPath != nil || ctxt.IsDir != nil || ctxt.HasSubdir != nil || ctxt.ReadDir != nil || ctxt.OpenFile != nil || !slices.Equal(ctxt.ToolTags, defaultToolTags) || !slices.Equal(ctxt.ReleaseTags, defaultReleaseTags) || ctxt.UseAllFiles { return errNoModules } diff --git a/src/go/build/build_test.go b/src/go/build/build_test.go index 605fa365dc..09fbeebdc7 100644 --- a/src/go/build/build_test.go +++ b/src/go/build/build_test.go @@ -828,3 +828,14 @@ func TestDirectives(t *testing.T) { check("XTestDirectives", p.XTestDirectives, `[{"//go:xtest1" "testdata/directives/c_test.go:1:1"} {"//go:xtest2" "testdata/directives/d_test.go:1:1"} {"//go:xtest3" "testdata/directives/d_test.go:2:1"}]`) } + +// TestContextImportGoWithUseAllFiles ensures that when Context.UseAllFiles is set, +// that the Go command is not invoked +func TestContextImportGoWithUseAllFiles(t *testing.T) { + ctxt := &Context{UseAllFiles: true} + p := &Package{} + got := ctxt.importGo(p, "some/package", ".", 0) + if got != errNoModules { + t.Fatalf("Error mismatch:\n\tGot: %v\n\tWant: %v", got, errNoModules) + } +}