blob: 1d83e6c07e897e993d57facb6e6fb2a43dbb4855 [file] [log] [blame]
# Regression test for golang.org/issue/34822: the 'go' command should prefer not
# to update the go.mod file if the changes only affect formatting, and should only
# remove redundant requirements in 'go mod tidy'.
env GO111MODULE=on
[short] skip
# Control case: verify that go.mod.tidy is actually tidy.
cp go.mod.tidy go.mod
go list all
cmp go.mod go.mod.tidy
# If the only difference in the go.mod file is the line endings,
# it should not be overwritten automatically.
cp go.mod.crlf go.mod
go list all
cmp go.mod go.mod.crlf
# However, 'go mod tidy' should fix whitespace even if there are no other changes.
go mod tidy
cmp go.mod go.mod.tidy
# Out-of-order requirements should not be overwritten automatically...
cp go.mod.unsorted go.mod
go list all
cmp go.mod go.mod.unsorted
# ...but 'go mod edit -fmt' should sort them.
go mod edit -fmt
cmp go.mod go.mod.tidy
# "// indirect" comments should be removed if direct dependencies are seen.
# changes.
cp go.mod.indirect go.mod
go list all
cmp go.mod go.mod.tidy
# "// indirect" comments should be added if appropriate.
cp go.mod.toodirect go.mod
go list all
cmp go.mod go.mod.toodirect
go mod vendor # loads everything, so adds "// indirect" comments.
cmp go.mod go.mod.tidy
rm -r vendor
# Redundant requirements should be preserved...
cp go.mod.redundant go.mod
go list all
cmp go.mod go.mod.redundant
go mod vendor
cmp go.mod go.mod.redundant
rm -r vendor
# ...except by 'go mod tidy'.
go mod tidy
cmp go.mod go.mod.tidy
# A missing "go" version directive should be added.
# However, that should not remove other redundant requirements.
cp go.mod.nogo go.mod
go list all
cmpenv go.mod go.mod.currentgo
-- go.mod.tidy --
module m
go 1.14
require (
rsc.io/quote v1.5.2
rsc.io/testonly v1.0.0 // indirect
)
-- x.go --
package x
import _ "rsc.io/quote"
-- go.mod.crlf --
module m
go 1.14
require (
rsc.io/quote v1.5.2
rsc.io/testonly v1.0.0 // indirect
)
-- go.mod.unsorted --
module m
go 1.14
require (
rsc.io/testonly v1.0.0 // indirect
rsc.io/quote v1.5.2
)
-- go.mod.indirect --
module m
go 1.14
require (
rsc.io/quote v1.5.2 // indirect
rsc.io/testonly v1.0.0 // indirect
)
-- go.mod.toodirect --
module m
go 1.14
require (
rsc.io/quote v1.5.2
rsc.io/testonly v1.0.0
)
-- go.mod.redundant --
module m
go 1.14
require (
rsc.io/quote v1.5.2
rsc.io/sampler v1.3.0 // indirect
rsc.io/testonly v1.0.0 // indirect
)
-- go.mod.nogo --
module m
require (
rsc.io/quote v1.5.2
rsc.io/sampler v1.3.0 // indirect
rsc.io/testonly v1.0.0 // indirect
)
-- go.mod.currentgo --
module m
go $goversion
require (
rsc.io/quote v1.5.2
rsc.io/sampler v1.3.0 // indirect
rsc.io/testonly v1.0.0 // indirect
)