]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: report loading errors from 'go mod tidy' and 'go mod vendor'
authorBryan C. Mills <bcmills@google.com>
Fri, 2 Aug 2019 20:24:45 +0000 (16:24 -0400)
committerBryan C. Mills <bcmills@google.com>
Fri, 2 Aug 2019 20:48:58 +0000 (20:48 +0000)
Fixes #27063

Change-Id: Iedd14fd614a3d79d1387b923a0f123c2bc9e0b33
Reviewed-on: https://go-review.googlesource.com/c/go/+/188763
Run-TryBot: Bryan C. Mills <bcmills@google.com>
Reviewed-by: Jay Conrod <jayconrod@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/go/internal/modload/load.go
src/cmd/go/testdata/script/mod_tidy_error.txt [new file with mode: 0644]
src/cmd/go/testdata/script/mod_vendor.txt

index 9a5d4f231c7e8ef172852c4eab334ec6c2301be3..52b371e5a9790779106f2d3917cbfc4c9f8212f5 100644 (file)
@@ -387,11 +387,13 @@ func loadAll(testAll bool) []string {
 
        var paths []string
        for _, pkg := range loaded.pkgs {
-               if e, ok := pkg.err.(*ImportMissingError); ok && e.Module.Path == "" {
-                       continue // Package doesn't actually exist.
+               if pkg.err != nil {
+                       base.Errorf("%s: %v", pkg.stackText(), pkg.err)
+                       continue
                }
                paths = append(paths, pkg.path)
        }
+       base.ExitIfErrors()
        return paths
 }
 
diff --git a/src/cmd/go/testdata/script/mod_tidy_error.txt b/src/cmd/go/testdata/script/mod_tidy_error.txt
new file mode 100644 (file)
index 0000000..9bb8528
--- /dev/null
@@ -0,0 +1,39 @@
+env GO111MODULE=on
+
+# Regression test for golang.org/issue/27063:
+# 'go mod tidy' and 'go mod vendor' should not hide loading errors.
+
+! go mod tidy
+stderr '^issue27063 imports\n\tnonexist: malformed module path "nonexist": missing dot in first path element'
+stderr '^issue27063 imports\n\tnonexist.example.com: cannot find module providing package nonexist.example.com'
+stderr '^issue27063 imports\n\tissue27063/other imports\n\tother.example.com/nonexist: cannot find module providing package other.example.com/nonexist'
+
+! go mod vendor
+stderr '^issue27063 imports\n\tnonexist: malformed module path "nonexist": missing dot in first path element'
+stderr '^issue27063 imports\n\tnonexist.example.com: cannot find module providing package nonexist.example.com'
+stderr '^issue27063 imports\n\tissue27063/other imports\n\tother.example.com/nonexist: cannot find module providing package other.example.com/nonexist'
+
+-- go.mod --
+module issue27063
+
+go 1.13
+
+require issue27063/other v0.0.0
+replace issue27063/other => ./other
+-- x.go --
+package main
+
+import (
+       "nonexist"
+
+       "nonexist.example.com"
+       "issue27063/other"
+)
+
+func main() {}
+-- other/go.mod --
+module issue27063/other
+-- other/other.go --
+package other
+
+import "other.example.com/nonexist"
index eae4f2946ce5318214f581fa0d57939964e04d3a..5d872c3c80ef73956146ca95a67c22850f254e79 100644 (file)
@@ -171,12 +171,6 @@ package m
 
 import _ "appengine"
 import _ "appengine/datastore"
--- nonexistent.go --
-// +build alternatereality
-
-package m
-
-import _ "nonexistent.rsc.io"
 -- mypkg/go.mod --
 module me
 -- mypkg/mydir/d.go --