env GO111MODULE=on
[short] skip

# Populate go.mod and go.sum.
go mod tidy

# initial conditions: using sampler v1.3.0, not listed in go.mod.
go list -deps
stdout rsc.io/sampler
! grep 'rsc.io/sampler v1.3.0' go.mod

# update to v1.3.1, now indirect in go.mod.
go get rsc.io/sampler@v1.3.1
grep 'rsc.io/sampler v1.3.1 // indirect' go.mod
cp go.mod go.mod.good

# vendoring can but should not need to make changes.
go mod vendor
cmp go.mod go.mod.good

# go list -mod=vendor (or go build -mod=vendor) must not modify go.mod.
# golang.org/issue/26704
go list -mod=vendor
cmp go.mod go.mod.good

# With a clean (and empty) module cache, 'go list -mod=vendor' should not download modules.
go clean -modcache
env GOPROXY=off
! go list ...
go list -mod=vendor ...

# However, it should still list packages in the main module.
go list -mod=vendor m/...
stdout m

-- go.mod --
module m
go 1.12
-- x.go --
package x
import _ "rsc.io/quote"
