| # Regression test for https://golang.org/issue/46462. |
| # |
| # The "runtime/cgo" import found in synthesized .go files (reported in |
| # the CompiledGoFiles field) should have a corresponding entry in the |
| # ImportMap field when a runtime/cgo variant (such as a test variant) |
| # will be used. |
| |
| [short] skip # -compiled can be slow (because it compiles things) |
| [!cgo] skip |
| |
| env CGO_ENABLED=1 |
| env GOFLAGS=-tags=netcgo # Force net to use cgo even on Windows. |
| |
| |
| # "runtime/cgo [runtime.test]" appears in the the test dependencies of "runtime", |
| # because "runtime/cgo" itself depends on "runtime" |
| |
| go list -deps -test -compiled -f '{{if eq .ImportPath "net [runtime.test]"}}{{printf "%q" .Imports}}{{end}}' runtime |
| |
| # Control case: the explicitly-imported package "sync" is a test variant, |
| # because "sync" depends on "runtime". |
| stdout '"sync \[runtime\.test\]"' |
| ! stdout '"sync"' |
| |
| # Experiment: the implicitly-imported package "runtime/cgo" is also a test variant, |
| # because "runtime/cgo" also depends on "runtime". |
| stdout '"runtime/cgo \[runtime\.test\]"' |
| ! stdout '"runtime/cgo"' |
| |
| |
| # Because the import of "runtime/cgo" in the cgo-generated file actually refers |
| # to "runtime/cgo [runtime.test]", the latter should be listed in the ImportMap. |
| # BUG(#46462): Today, it is not. |
| |
| go list -deps -test -compiled -f '{{if eq .ImportPath "net [runtime.test]"}}{{printf "%q" .ImportMap}}{{end}}' runtime |
| |
| stdout '"sync":"sync \[runtime\.test\]"' # control |
| stdout '"runtime/cgo":"runtime/cgo \[runtime\.test\]"' # experiment |