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
69
View as plain text