blob: 7115c365f05198c263694b06da65bfb00b1995c0 [file] [log] [blame]
# Check that files and their imports are not included in 'go list' output
# when they are excluded by build constraints.
# Linux and cgo files should be included when building in that configuration.
env GOOS=linux
env GOARCH=amd64
env CGO_ENABLED=1
go list -f '{{range .GoFiles}}{{.}} {{end}}'
stdout '^cgotag.go empty.go suffix_linux.go tag.go $'
go list -f '{{range .CgoFiles}}{{.}} {{end}}'
stdout '^cgoimport.go $'
go list -f '{{range .Imports}}{{.}} {{end}}'
stdout '^C cgoimport cgotag suffix tag $'
# Disabling cgo should exclude cgo files and their imports.
env CGO_ENABLED=0
go list -f '{{range .GoFiles}}{{.}} {{end}}'
stdout 'empty.go suffix_linux.go tag.go'
go list -f '{{range .CgoFiles}}{{.}} {{end}}'
! stdout .
go list -f '{{range .Imports}}{{.}} {{end}}'
stdout '^suffix tag $'
# Changing OS should exclude linux sources.
env GOOS=darwin
go list -f '{{range .GoFiles}}{{.}} {{end}}'
stdout '^empty.go $'
go list -f '{{range .Imports}}{{.}} {{end}}'
stdout '^$'
# Enabling a tag should include files that require it.
go list -tags=extra -f '{{range .GoFiles}}{{.}} {{end}}'
stdout '^empty.go extra.go $'
go list -tags=extra -f '{{range .Imports}}{{.}} {{end}}'
stdout '^extra $'
# Packages that require a tag should not be listed unless the tag is on.
! go list ./tagonly
go list -tags=extra ./tagonly
stdout m/tagonly
-- go.mod --
module m
go 1.13
-- empty.go --
package p
-- extra.go --
// +build extra
package p
import _ "extra"
-- suffix_linux.go --
package p
import _ "suffix"
-- tag.go --
// +build linux
package p
import _ "tag"
-- cgotag.go --
// +build cgo
package p
import _ "cgotag"
-- cgoimport.go --
package p
import "C"
import _ "cgoimport"
-- tagonly/tagonly.go --
// +build extra
package tagonly