| # For 1.23+, vendored packages that are missing in modules.txt should result in an error. |
| cp incorrect_modules.txt vendor/modules.txt |
| # incorrect_modules is missing foo.com/internal/bar/b so the build should fail. |
| ! go build ./vendor/foo.com/internal/bar/a |
| stderr 'cannot find module providing package foo.com/internal/bar/b: import lookup disabled by -mod=vendor' |
| stderr 'go: ignoring package foo.com/internal/bar/b which exists in the vendor directory but is missing from vendor/modules.txt. To sync the vendor directory run go mod vendor.' |
| |
| cp correct_modules.txt vendor/modules.txt |
| go build ./vendor/foo.com/internal/bar/a |
| |
| # For go versions < 1.23, vendored packages that are missing in modules.txt should not result in an error. |
| cp 122go.mod go.mod |
| |
| cp incorrect_modules.txt vendor/modules.txt |
| |
| # go version < 1.23 and incorrect_modules is missing foo.com/internal/bar/b so the build should not fail |
| go build ./vendor/foo.com/internal/bar/a |
| |
| cp correct_modules.txt vendor/modules.txt |
| go build ./vendor/foo.com/internal/bar/a |
| |
| -- 122go.mod -- |
| module example.com/x |
| go 1.22 |
| |
| require "foo.com/internal/bar" v1.0.0 |
| |
| -- go.mod -- |
| module example.com/x |
| go 1.23 |
| |
| require "foo.com/internal/bar" v1.0.0 |
| |
| -- incorrect_modules.txt -- |
| # foo.com/internal/bar v1.0.0 |
| ## explicit |
| foo.com/internal/bar/a |
| |
| -- correct_modules.txt -- |
| # foo.com/internal/bar v1.0.0 |
| ## explicit |
| foo.com/internal/bar/a |
| foo.com/internal/bar/b |
| |
| -- vendor/foo.com/internal/bar/a/a.go -- |
| package a |
| import _ "foo.com/internal/bar/b" |
| |
| -- vendor/foo.com/internal/bar/b/b.go -- |
| package b |