blob: d3d7cc83d2e90186e8a4f34d375543de3fda83ac [file] [log] [blame]
# Return an error if the user tries to list a go source file directly in $GOROOT/src.
# Tests golang.org/issue/36587
[gccgo] skip
env GOROOT=$WORK/goroot
env GOPATH=$WORK/gopath
go env GOROOT
stdout $WORK[/\\]goroot
# switch to GOROOT/src
cd $GOROOT/src
# In module mode, 'go list ./...' should not treat .go files in GOROOT/src as an
# importable package, since that directory has no valid import path.
env GO111MODULE=on
go list ...
stdout -count=1 '^.+$'
stdout '^fmt$'
! stdout foo
go list ./...
stdout -count=1 '^.+$'
stdout '^fmt$'
! stdout foo
go list std
stdout -count=1 '^.+$'
stdout '^fmt$'
! go list .
stderr '^GOROOT/src is not an importable package$'
# In GOPATH mode, 'go list ./...' should synthesize a legacy GOPATH-mode path —
# not a standard-library or empty path — for the errant package.
env GO111MODULE=off
go list ./...
stdout -count=2 '^.+$' # Both 'fmt' and GOROOT/src should be listed.
stdout '^fmt$'
[!windows] stdout ^_$WORK/goroot/src$
[windows] stdout goroot/src$ # On windows the ":" in the volume name is mangled
go list ...
! stdout goroot/src
go list std
! stdout goroot/src
go list .
[!windows] stdout ^_$WORK/goroot/src$
[windows] stdout goroot/src$
# switch to GOPATH/src
cd $GOPATH/src
# GO111MODULE=off,GOPATH
env GO111MODULE=off
go list ./...
[!windows] stdout ^_$WORK/gopath/src$
[windows] stdout gopath/src$
go list all
! stdout gopath/src
-- $WORK/goroot/src/go.mod --
module std
go 1.14
-- $WORK/goroot/src/foo.go --
package foo
-- $WORK/goroot/src/fmt/fmt.go --
package fmt
-- $WORK/goroot/src/cmd/README --
This directory must exist in order for the 'cmd' pattern to have something to
match against.
-- $GOPATH/src/foo.go --
package foo