mirror of https://github.com/golang/go.git
cmd/go: avoid setting mod=vendor in workspace mode
Workspaces with a single module would enter mod=vendor mode even when in workspace mode. Fix that by explicitly checking that we're not in workspace mode when deciding whether to enter vendor mode. Fixes #54130 Change-Id: I03fcd9db4160c9872aa2b7957a80f24d49f787d0 Reviewed-on: https://go-review.googlesource.com/c/go/+/439415 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Bryan Mills <bcmills@google.com> Run-TryBot: Michael Matloob <matloob@golang.org>
This commit is contained in:
parent
498ee73a4b
commit
005c78d8bb
|
|
@ -1154,7 +1154,7 @@ func setDefaultBuildMod() {
|
|||
return
|
||||
}
|
||||
|
||||
if len(modRoots) == 1 {
|
||||
if len(modRoots) == 1 && !inWorkspaceMode() {
|
||||
index := MainModules.GetSingleIndexOrNil()
|
||||
if fi, err := fsys.Stat(filepath.Join(modRoots[0], "vendor")); err == nil && fi.IsDir() {
|
||||
modGo := "unspecified"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,56 @@
|
|||
# Test that mod=vendor is disabled in workspace mode, even
|
||||
# with a single workspace module.
|
||||
|
||||
cd workspace
|
||||
|
||||
# Base case: ensure the module would default to mod=vendor
|
||||
# outside of workspace mode.
|
||||
env GOWORK=off
|
||||
go list -f '{{.Dir}}' example.com/dep
|
||||
stdout $GOPATH[\\/]src[\\/]workspace[\\/]vendor[\\/]example.com[\\/]dep
|
||||
|
||||
# Test case: endure the module does not enter mod=vendor outside
|
||||
# worspace mode.
|
||||
env GOWORK=''
|
||||
go list -f '{{.Dir}}' example.com/dep
|
||||
stdout $GOPATH[\\/]src[\\/]dep
|
||||
|
||||
-- workspace/go.work --
|
||||
use .
|
||||
replace example.com/dep => ../dep
|
||||
-- workspace/main.go --
|
||||
package main
|
||||
|
||||
import "example.com/dep"
|
||||
|
||||
func main() {
|
||||
dep.Dep()
|
||||
}
|
||||
-- workspace/go.mod --
|
||||
module example.com/mod
|
||||
|
||||
go 1.20
|
||||
|
||||
require example.com/dep v1.0.0
|
||||
-- workspace/vendor/example.com/dep/dep.go --
|
||||
package dep
|
||||
|
||||
import "fmt"
|
||||
|
||||
func Dep() {
|
||||
fmt.Println("the vendored dep")
|
||||
}
|
||||
-- workspace/vendor/modules.txt --
|
||||
# example.com/dep v1.0.0
|
||||
## explicit
|
||||
example.com/dep
|
||||
-- dep/go.mod --
|
||||
module example.com/dep
|
||||
-- dep/dep.go --
|
||||
package dep
|
||||
|
||||
import "fmt"
|
||||
|
||||
func Dep () {
|
||||
fmt.Println("the real dep")
|
||||
}
|
||||
Loading…
Reference in New Issue