]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: mod init outside of GOPATH silently fails
authorRens Rikkerink <1952177+ikkerens@users.noreply.github.com>
Tue, 9 Apr 2019 20:16:35 +0000 (20:16 +0000)
committerBryan C. Mills <bcmills@google.com>
Thu, 18 Apr 2019 17:23:47 +0000 (17:23 +0000)
Running `go mod init` outside of GOPATH with `GO111MODULE=off`
silently fails. This behavior was undocumented.

This CL makes go mod fail with the error:

   go: modules disabled by GO111MODULE=off; see 'go help modules'
Comparing with already erroring GO111MODULE=<value> conditions:

* With GO111MODULE=auto, inside GOPATH:
    go modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'
* With GO111MODULE=auto outside of GOPATH:
    go: cannot determine module path for source directory /path/to/dir (outside GOPATH, no import comments)

Fixes #31342

Change-Id: I749787d2a8640913c4ac263072d051314d76e778
GitHub-Last-Rev: b38447457d8cabed367ea4872cf7f238a49539c7
GitHub-Pull-Request: golang/go#31255
Reviewed-on: https://go-review.googlesource.com/c/go/+/170697
Reviewed-by: Bryan C. Mills <bcmills@google.com>
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/go/internal/modcmd/init.go
src/cmd/go/testdata/script/mod_off_init.txt [new file with mode: 0644]

index 0f7421e5849f2f934c94ece4e58ff1793e1161f1..b94453bab0cf623208524f6c79c3e15c52515cdc 100644 (file)
@@ -35,6 +35,9 @@ func runInit(cmd *base.Command, args []string) {
        if len(args) == 1 {
                modload.CmdModModule = args[0]
        }
+       if os.Getenv("GO111MODULE") == "off" {
+               base.Fatalf("go mod init: modules disabled by GO111MODULE=off; see 'go help modules'")
+       }
        if _, err := os.Stat("go.mod"); err == nil {
                base.Fatalf("go mod init: go.mod already exists")
        }
diff --git a/src/cmd/go/testdata/script/mod_off_init.txt b/src/cmd/go/testdata/script/mod_off_init.txt
new file mode 100644 (file)
index 0000000..f9a4e10
--- /dev/null
@@ -0,0 +1,7 @@
+env GO111MODULE=off
+
+# This script tests that running go mod init with
+# GO111MODULE=off when outside of GOPATH will fatal
+# with an error message.
+! go mod init
+stderr 'go mod init: modules disabled by GO111MODULE=off; see ''go help modules'''