env GO111MODULE=on
[!symlink] skip

# 'go get' should resolve modules of imported packages.
go get
go list -deps -f '{{.Module}}' .
stdout golang.org/x/text

go get ./subpkg
go list -deps -f '{{.Module}}' ./subpkg
stdout golang.org/x/text

# Create a copy of the module using symlinks in src/links.
mkdir links
symlink links/go.mod -> $GOPATH/src/go.mod
symlink links/go.sum -> $GOPATH/src/go.sum
symlink links/issue.go -> $GOPATH/src/issue.go
mkdir links/subpkg
symlink links/subpkg/issue.go -> $GOPATH/src/subpkg/issue.go

# We should see the copy as a valid module root.
cd links
go env GOMOD
stdout links[/\\]go.mod
go list -m
stdout golang.org/issue/28107

# The symlink-based copy should contain the same packages
# and have the same dependencies as the original.
go list -deps -f '{{.Module}}' .
stdout golang.org/x/text
go list -deps -f '{{.Module}}' ./subpkg
stdout golang.org/x/text

-- go.mod --
module golang.org/issue/28107

-- issue.go --
package issue

import _ "golang.org/x/text/language"
-- subpkg/issue.go --
package issue

import _ "golang.org/x/text/language"
