| # Test of go work sync in a workspace in which some dependency in the build |
| # list of 'b' (but not otherwise needed by `b`, so not seen when lazy loading |
| # occurs) actually is relevant to `a`. |
| # |
| # a -> p 1.0 |
| # b -> q 1.1 -> p 1.1 |
| go work sync |
| cmp a/go.mod a/want_go.mod |
| cmp b/go.mod b/want_go.mod |
| |
| -- go.work -- |
| go 1.18 |
| |
| use ( |
| ./a |
| ./b |
| ) |
| |
| -- a/go.mod -- |
| go 1.18 |
| |
| module example.com/a |
| |
| require ( |
| example.com/p v1.0.0 |
| ) |
| |
| replace ( |
| example.com/p => ../p |
| ) |
| -- a/want_go.mod -- |
| go 1.18 |
| |
| module example.com/a |
| |
| require example.com/p v1.1.0 |
| |
| replace example.com/p => ../p |
| -- a/a.go -- |
| package a |
| |
| import ( |
| "example.com/p" |
| ) |
| |
| func Foo() { |
| p.P() |
| } |
| -- b/go.mod -- |
| go 1.18 |
| |
| module example.com/b |
| |
| require ( |
| example.com/q v1.1.0 |
| ) |
| |
| replace ( |
| example.com/q => ../q |
| ) |
| -- b/want_go.mod -- |
| go 1.18 |
| |
| module example.com/b |
| |
| require ( |
| example.com/q v1.1.0 |
| ) |
| |
| replace ( |
| example.com/q => ../q |
| ) |
| -- b/b.go -- |
| package b |
| |
| import ( |
| "example.com/q" |
| ) |
| |
| func Foo() { |
| q.Q() |
| } |
| -- p/go.mod -- |
| go 1.18 |
| |
| module example.com/p |
| -- p/p.go -- |
| package p |
| |
| func P() {} |
| -- q/go.mod -- |
| go 1.18 |
| |
| module example.com/q |
| |
| require example.com/p v1.1.0 |
| |
| replace example.com/p => ../p |
| -- q/q.go -- |
| package q |
| |
| import example.com/p |
| |
| func Q() { |
| p.P() |
| } |