]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: fix go get -u handling of changing dependencies
authorRuss Cox <rsc@golang.org>
Tue, 14 Jul 2015 18:52:04 +0000 (14:52 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 15 Jul 2015 04:41:08 +0000 (04:41 +0000)
Fixes #9224.

Change-Id: Ie0f4f14407099e4fa7ebe361a95b6492012928a2
Reviewed-on: https://go-review.googlesource.com/12192
Reviewed-by: Andrew Gerrand <adg@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/go/get.go
src/cmd/go/go_test.go

index 0e81d7c1c352b4b7d59058fccbbf8acb33066762..09314f563e6f824ed966d6f3782bd98bd5da7a6d 100644 (file)
@@ -277,9 +277,9 @@ func download(arg string, parent *Package, stk *importStack, getTestDeps bool) {
                }
 
                // Process dependencies, now that we know what they are.
-               for _, dep := range p.deps {
+               for _, path := range p.Imports {
                        // Don't get test dependencies recursively.
-                       download(dep.ImportPath, p, stk, false)
+                       download(path, p, stk, false)
                }
                if getTestDeps {
                        // Process test dependencies when -t is specified.
index af5439616f65a5e7134bd250a86011a70550bdce..1f3615f4982dc3364e732d90d260a46e4918676f 100644 (file)
@@ -2128,3 +2128,32 @@ func TestGoTestImportErrorStack(t *testing.T) {
                t.Fatal("did not give full import stack:\n\n%s", tg.stderr.String())
        }
 }
+
+func TestGoGetUpdate(t *testing.T) {
+       // golang.org/issue/9224.
+       // The recursive updating was trying to walk to
+       // former dependencies, not current ones.
+       testenv.MustHaveExternalNetwork(t)
+
+       tg := testgo(t)
+       defer tg.cleanup()
+       tg.makeTempdir()
+       tg.setenv("GOPATH", tg.path("."))
+
+       rewind := func() {
+               tg.run("get", "github.com/rsc/go-get-issue-9224-cmd")
+               cmd := exec.Command("git", "reset", "--hard", "HEAD~")
+               cmd.Dir = tg.path("src/github.com/rsc/go-get-issue-9224-lib")
+               out, err := cmd.CombinedOutput()
+               if err != nil {
+                       t.Fatalf("git: %v\n%s", err, out)
+               }
+       }
+
+       rewind()
+       tg.run("get", "-u", "github.com/rsc/go-get-issue-9224-cmd")
+
+       // Again with -d -u.
+       rewind()
+       tg.run("get", "-d", "-u", "github.com/rsc/go-get-issue-9224-cmd")
+}