cmd/go/internal/vgo: skip not-yet-downloaded module in verify

Verify is meant to check what's on the local system.
If we haven't downloaded a module yet, don't download it just to check it.
If we do need to download it later, it will be checked then.

Fixes golang/go#24067.

Change-Id: Ic8dd83fac758404ff6d914447e077b2c54284136
Reviewed-on: https://go-review.googlesource.com/117935
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
diff --git a/vendor/cmd/go/internal/vgo/verify.go b/vendor/cmd/go/internal/vgo/verify.go
index 91c41b8..d21c9d7 100644
--- a/vendor/cmd/go/internal/vgo/verify.go
+++ b/vendor/cmd/go/internal/vgo/verify.go
@@ -42,8 +42,11 @@
 		// TODO: take arguments
 		base.Fatalf("vgo verify: verify takes no arguments")
 	}
+
+	// Make go.mod consistent but don't load any packages.
 	InitMod()
-	ImportPaths([]string{"all"})
+	iterate(func(*loader) {})
+	writeGoMod()
 
 	ok := true
 	for _, mod := range buildList[1:] {
diff --git a/vendor/cmd/go/vgo_test.go b/vendor/cmd/go/vgo_test.go
index f559970..694c150 100644
--- a/vendor/cmd/go/vgo_test.go
+++ b/vendor/cmd/go/vgo_test.go
@@ -337,3 +337,23 @@
 	// make sure Gopkg.lock was properly used.
 	tg.grepStderr("v0.6.0", "expected github.com/pkg/errors at v0.6.0")
 }
+
+func TestVerifyNotDownloaded(t *testing.T) {
+	testenv.MustHaveExternalNetwork(t)
+	tg := testgo(t)
+	defer tg.cleanup()
+	tg.makeTempdir()
+	tg.setenv("GOPATH", tg.path("gp"))
+	tg.must(os.MkdirAll(tg.path("x"), 0777))
+	tg.must(ioutil.WriteFile(tg.path("x/go.mod"), []byte(`
+		module x
+		require github.com/pkg/errors v0.8.0
+	`), 0666))
+	tg.must(ioutil.WriteFile(tg.path("x/go.modverify"), []byte(`github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw=
+`), 0666))
+	tg.must(ioutil.WriteFile(tg.path("x/x.go"), []byte(`package x`), 0666))
+	tg.cd(tg.path("x"))
+	tg.run("-vgo", "verify")
+	tg.mustNotExist(filepath.Join(tg.path("gp"), "/src/v/cache/github.com/pkg/errors/@v/v0.8.0.zip"))
+	tg.mustNotExist(filepath.Join(tg.path("gp"), "/src/v/github.com/pkg"))
+}