| env GO111MODULE=on |
| |
| cd foo |
| |
| # Testing an explicit source file should use the same import visibility as the |
| # package in the same directory. |
| go list -test -deps |
| go list -test -deps foo_test.go |
| |
| # If the file is inside the main module's vendor directory, it should have |
| # visibility based on the vendor-relative import path. |
| mkdir vendor/example.com/foo |
| cp foo_test.go vendor/example.com/foo |
| go list -test -deps vendor/example.com/foo/foo_test.go |
| |
| # If the file is outside the main module entirely, it should be treated as outside. |
| cp foo_test.go ../foo_test.go |
| ! go list -test -deps ../foo_test.go |
| stderr 'use of internal package' |
| |
| -- foo/go.mod -- |
| module example.com/foo |
| require example.com/internal v0.0.0 |
| replace example.com/internal => ../internal |
| |
| -- foo/internal.go -- |
| package foo |
| import _ "example.com/internal" |
| |
| -- foo/foo_test.go -- |
| package foo_test |
| |
| import ( |
| "testing" |
| "example.com/internal" |
| ) |
| |
| func TestHacksEnabled(t *testing.T) { |
| if !internal.Hacks { |
| t.Fatal("hacks not enabled") |
| } |
| } |
| |
| -- internal/go.mod -- |
| module example.com/internal |
| |
| -- internal/internal.go -- |
| package internal |
| const Hacks = true |