Commit b2ea4e6d authored by Jay Conrod's avatar Jay Conrod

cmd/go: make 'go mod verify' report an error outside a module

Also, test that 'go mod download' without arguments reports an error.

Fixes #32027

Change-Id: I873fc59fba4c78ee2b4f49f0d846ee2ac0eee4db
Reviewed-on: https://go-review.googlesource.com/c/go/+/202697
Run-TryBot: Jay Conrod <jayconrod@google.com>
Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 7d891d5e
...@@ -43,7 +43,7 @@ func runVerify(cmd *base.Command, args []string) { ...@@ -43,7 +43,7 @@ func runVerify(cmd *base.Command, args []string) {
base.Fatalf("go mod verify: verify takes no arguments") base.Fatalf("go mod verify: verify takes no arguments")
} }
// Checks go mod expected behavior // Checks go mod expected behavior
if !modload.Enabled() { if !modload.Enabled() || !modload.HasModRoot() {
if cfg.Getenv("GO111MODULE") == "off" { if cfg.Getenv("GO111MODULE") == "off" {
base.Fatalf("go: modules disabled by GO111MODULE=off; see 'go help modules'") base.Fatalf("go: modules disabled by GO111MODULE=off; see 'go help modules'")
} else { } else {
......
...@@ -82,6 +82,10 @@ stderr 'cannot find main module' ...@@ -82,6 +82,10 @@ stderr 'cannot find main module'
stderr 'cannot find main module' stderr 'cannot find main module'
# 'go mod download' without arguments should report an error.
! go mod download
stderr 'no modules specified'
# 'go mod download' should download exactly the requested module without dependencies. # 'go mod download' should download exactly the requested module without dependencies.
rm -r $GOPATH/pkg/mod/cache/download/example.com rm -r $GOPATH/pkg/mod/cache/download/example.com
go mod download example.com/printversion@v1.0.0 go mod download example.com/printversion@v1.0.0
...@@ -92,15 +96,16 @@ exists $GOPATH/pkg/mod/cache/download/example.com/printversion/@v/v1.0.0.zip ...@@ -92,15 +96,16 @@ exists $GOPATH/pkg/mod/cache/download/example.com/printversion/@v/v1.0.0.zip
! go mod download all ! go mod download all
stderr 'go: cannot match "all": working directory is not part of a module' stderr 'go: cannot match "all": working directory is not part of a module'
# 'go mod vendor' should fail: it starts by clearing the existing vendor # 'go mod vendor' should fail: it starts by clearing the existing vendor
# directory, and we don't know where that is. # directory, and we don't know where that is.
! go mod vendor ! go mod vendor
stderr 'cannot find main module' stderr 'cannot find main module'
# 'go mod verify' should succeed: we have no modules to verify.
go mod verify # 'go mod verify' should fail: we have no modules to verify.
stdout 'all modules verified' ! go mod verify
! stderr . stderr 'cannot find main module'
# 'go get' without arguments implicitly operates on the main module, and thus # 'go get' without arguments implicitly operates on the main module, and thus
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment