Skip to content

Commit bdc1bef

Browse files
author
Jay Conrod
committed
cmd/go: ensure 'go get -u' can upgrade pruned (1.17+) modules
Fixes #47768 Change-Id: I981a31ba4ff716570ac4c6f35b289fa480faa5bb Reviewed-on: https://go-review.googlesource.com/c/go/+/343879 Trust: Jay Conrod <[email protected]> Run-TryBot: Jay Conrod <[email protected]> TryBot-Result: Go Bot <[email protected]> Reviewed-by: Michael Matloob <[email protected]> Reviewed-by: Bryan C. Mills <[email protected]>
1 parent b602dae commit bdc1bef

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

src/cmd/go/internal/modload/edit.go

+1
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ func raiseLimitsForUpgrades(ctx context.Context, maxVersion map[string]string, d
237237
continue
238238
}
239239

240+
allow(m)
240241
for _, r := range summary.require {
241242
allow(r)
242243
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Check that 'go get -u' will upgrade a dependency (direct or indirect)
2+
# when the main module and the dependency are both lazy.
3+
# Verifies #47768.
4+
5+
# Check that go.mod is tidy, and an upgrade is available.
6+
cp go.mod go.mod.orig
7+
go mod tidy
8+
cmp go.mod go.mod.orig
9+
10+
go list -m -u example.com/lazyupgrade
11+
stdout '^example.com/lazyupgrade v0.1.0 \[v0.1.1\] => ./[email protected]$'
12+
13+
# 'go get -u' on a package that directly imports the dependency should upgrade.
14+
go get -u ./usedirect
15+
go list -m example.com/lazyupgrade
16+
stdout '^example.com/lazyupgrade v0.1.1 => ./[email protected]$'
17+
cp go.mod.orig go.mod
18+
19+
# 'go get -u' on a package that indirectly imports the dependency should upgrade.
20+
go get -u ./useindirect
21+
go list -m example.com/lazyupgrade
22+
stdout '^example.com/lazyupgrade v0.1.1 => ./[email protected]$'
23+
24+
-- go.mod --
25+
module use
26+
27+
go 1.17
28+
29+
require (
30+
direct v0.0.0
31+
example.com/lazyupgrade v0.1.0
32+
)
33+
34+
replace (
35+
direct => ./direct
36+
example.com/lazyupgrade v0.1.0 => ./[email protected]
37+
example.com/lazyupgrade v0.1.1 => ./[email protected]
38+
)
39+
-- usedirect/usedirect.go --
40+
package use
41+
42+
import _ "example.com/lazyupgrade"
43+
-- useindirect/useindirect.go --
44+
package use
45+
46+
import _ "direct"
47+
-- direct/go.mod --
48+
module direct
49+
50+
go 1.17
51+
52+
require example.com/lazyupgrade v0.1.0
53+
-- direct/direct.go --
54+
package direct
55+
56+
import _ "example.com/lazyupgrade"
57+
-- [email protected]/go.mod --
58+
module example.com/lazyupgrade
59+
60+
go 1.17
61+
-- [email protected]/lazyupgrade.go --
62+
package lazyupgrade
63+
-- [email protected]/go.mod --
64+
module example.com/lazyupgrade
65+
66+
go 1.17
67+
-- [email protected]/lazyupgrade.go --
68+
package lazyupgrade

0 commit comments

Comments
 (0)