]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.17] cmd/go: ensure 'go get -u' can upgrade pruned (1.17+) modules
authorJay Conrod <jayconrod@google.com>
Fri, 20 Aug 2021 21:38:09 +0000 (14:38 -0700)
committerCherry Mui <cherryyz@google.com>
Wed, 1 Sep 2021 17:15:36 +0000 (17:15 +0000)
Fixes #47857

Change-Id: I981a31ba4ff716570ac4c6f35b289fa480faa5bb
Reviewed-on: https://go-review.googlesource.com/c/go/+/343879
Trust: Jay Conrod <jayconrod@google.com>
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Michael Matloob <matloob@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
(cherry picked from commit bdc1bef8a05d4524160d56a027f110257323033d)
Reviewed-on: https://go-review.googlesource.com/c/go/+/346211

src/cmd/go/internal/modload/edit.go
src/cmd/go/testdata/script/mod_get_lazy_upgrade_lazy.txt [new file with mode: 0644]

index c350b9d1b5c571ed0e0754a07ad58fa3c9b26fe9..dfc366d21d7fbf3463fe46e5c3ba25be05d809fb 100644 (file)
@@ -237,6 +237,7 @@ func raiseLimitsForUpgrades(ctx context.Context, maxVersion map[string]string, d
                                continue
                        }
 
+                       allow(m)
                        for _, r := range summary.require {
                                allow(r)
                        }
diff --git a/src/cmd/go/testdata/script/mod_get_lazy_upgrade_lazy.txt b/src/cmd/go/testdata/script/mod_get_lazy_upgrade_lazy.txt
new file mode 100644 (file)
index 0000000..3dae383
--- /dev/null
@@ -0,0 +1,68 @@
+# Check that 'go get -u' will upgrade a dependency (direct or indirect)
+# when the main module and the dependency are both lazy.
+# Verifies #47768.
+
+# Check that go.mod is tidy, and an upgrade is available.
+cp go.mod go.mod.orig
+go mod tidy
+cmp go.mod go.mod.orig
+
+go list -m -u example.com/lazyupgrade
+stdout '^example.com/lazyupgrade v0.1.0 \[v0.1.1\] => ./lazyupgrade@v0.1.0$'
+
+# 'go get -u' on a package that directly imports the dependency should upgrade.
+go get -u ./usedirect
+go list -m example.com/lazyupgrade
+stdout '^example.com/lazyupgrade v0.1.1 => ./lazyupgrade@v0.1.1$'
+cp go.mod.orig go.mod
+
+# 'go get -u' on a package that indirectly imports the dependency should upgrade.
+go get -u ./useindirect
+go list -m example.com/lazyupgrade
+stdout '^example.com/lazyupgrade v0.1.1 => ./lazyupgrade@v0.1.1$'
+
+-- go.mod --
+module use
+
+go 1.17
+
+require (
+       direct v0.0.0
+       example.com/lazyupgrade v0.1.0
+)
+
+replace (
+       direct => ./direct
+       example.com/lazyupgrade v0.1.0 => ./lazyupgrade@v0.1.0
+       example.com/lazyupgrade v0.1.1 => ./lazyupgrade@v0.1.1
+)
+-- usedirect/usedirect.go --
+package use
+
+import _ "example.com/lazyupgrade"
+-- useindirect/useindirect.go --
+package use
+
+import _ "direct"
+-- direct/go.mod --
+module direct
+
+go 1.17
+
+require example.com/lazyupgrade v0.1.0
+-- direct/direct.go --
+package direct
+
+import _ "example.com/lazyupgrade"
+-- lazyupgrade@v0.1.0/go.mod --
+module example.com/lazyupgrade
+
+go 1.17
+-- lazyupgrade@v0.1.0/lazyupgrade.go --
+package lazyupgrade
+-- lazyupgrade@v0.1.1/go.mod --
+module example.com/lazyupgrade
+
+go 1.17
+-- lazyupgrade@v0.1.1/lazyupgrade.go --
+package lazyupgrade