mirror of
https://github.com/golang/go
synced 2024-11-23 19:20:03 -07:00
cmd/go/internal/modload: reject empty go.mod files
Don't add a module declaration to a go.mod file when loading a module. Require a user to call go mod init or to add the module declaration themselves. Fixes #35070 Change-Id: If5543580d3c1cfee1fc528eb853b872c4173ca82 Reviewed-on: https://go-review.googlesource.com/c/go/+/234107 Run-TryBot: Michael Matloob <matloob@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
6f561e65b1
commit
d4986e0e1d
@ -368,13 +368,9 @@ func InitMod(ctx context.Context) {
|
||||
modFile = f
|
||||
index = indexModFile(data, f, fixed)
|
||||
|
||||
if len(f.Syntax.Stmt) == 0 || f.Module == nil {
|
||||
// Empty mod file. Must add module path.
|
||||
path, err := findModulePath(modRoot)
|
||||
if err != nil {
|
||||
base.Fatalf("go: %v", err)
|
||||
}
|
||||
f.AddModuleStmt(path)
|
||||
if f.Module == nil {
|
||||
// No module declaration. Must add module path.
|
||||
base.Fatalf("go: no module declaration in go.mod.\n\tRun 'go mod edit -module=example.com/mod' to specify the module path.")
|
||||
}
|
||||
|
||||
if len(f.Syntax.Stmt) == 1 && f.Module != nil {
|
||||
|
5
src/cmd/go/testdata/script/mod_find.txt
vendored
5
src/cmd/go/testdata/script/mod_find.txt
vendored
@ -19,6 +19,11 @@ go mod init
|
||||
stderr 'module example.com/x/y$'
|
||||
rm go.mod
|
||||
|
||||
# go mod init rejects a zero-length go.mod file
|
||||
cp $devnull go.mod # can't use touch to create it because Windows
|
||||
! go mod init
|
||||
stderr 'go.mod already exists'
|
||||
|
||||
# Module path from Godeps/Godeps.json overrides GOPATH.
|
||||
cd $GOPATH/src/example.com/x/y/z
|
||||
go mod init
|
||||
|
12
src/cmd/go/testdata/script/mod_invalid_path.txt
vendored
Normal file
12
src/cmd/go/testdata/script/mod_invalid_path.txt
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
# Test that mod files with missing paths produce an error.
|
||||
|
||||
# Test that go list fails on a go.mod with no module declaration.
|
||||
cd $WORK/gopath/src/mod
|
||||
! go list .
|
||||
stderr '^go: no module declaration in go.mod.\n\tRun ''go mod edit -module=example.com/mod'' to specify the module path.$'
|
||||
|
||||
-- mod/go.mod --
|
||||
|
||||
-- mod/foo.go --
|
||||
package foo
|
||||
|
Loading…
Reference in New Issue
Block a user