mirror of https://github.com/golang/go.git
cmd/go: version command should error when given bad args
For example, 'go version -m' happily gives you Go's own version, even though the -m flag only makes sense when grabbing the version of a binary on disk. Similarly, if any of the directly named files can't be found, the tool would succeed. That's acceptable if an error is encountered while walking a large directory, but not when locating a path directly given by the user. These added test cases run even in short mode, as 'go build' is not needed for them. Change-Id: I7bb40b72853799e31d9f86cc5e999c8d57813eef Reviewed-on: https://go-review.googlesource.com/c/go/+/221397 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
18053b7131
commit
b8f54e57c2
|
|
@ -53,6 +53,11 @@ var (
|
||||||
|
|
||||||
func runVersion(cmd *base.Command, args []string) {
|
func runVersion(cmd *base.Command, args []string) {
|
||||||
if len(args) == 0 {
|
if len(args) == 0 {
|
||||||
|
if *versionM || *versionV {
|
||||||
|
fmt.Fprintf(os.Stderr, "go version: flags can only be used with arguments\n")
|
||||||
|
base.SetExitStatus(2)
|
||||||
|
return
|
||||||
|
}
|
||||||
fmt.Printf("go version %s %s/%s\n", runtime.Version(), runtime.GOOS, runtime.GOARCH)
|
fmt.Printf("go version %s %s/%s\n", runtime.Version(), runtime.GOOS, runtime.GOARCH)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -61,6 +66,7 @@ func runVersion(cmd *base.Command, args []string) {
|
||||||
info, err := os.Stat(arg)
|
info, err := os.Stat(arg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "%v\n", err)
|
fmt.Fprintf(os.Stderr, "%v\n", err)
|
||||||
|
base.SetExitStatus(1)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if info.IsDir() {
|
if info.IsDir() {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,16 @@
|
||||||
|
# Without arguments, we just print Go's own version.
|
||||||
|
go version
|
||||||
|
stdout '^go version'
|
||||||
|
|
||||||
|
# Flags without files, or paths to misisng files, should error.
|
||||||
|
! go version missing.exe
|
||||||
|
! go version -m
|
||||||
|
stderr 'with arguments'
|
||||||
|
! go version -v
|
||||||
|
stderr 'with arguments'
|
||||||
|
|
||||||
env GO111MODULE=on
|
env GO111MODULE=on
|
||||||
|
# Skip the builds below if we are running in short mode.
|
||||||
[short] skip
|
[short] skip
|
||||||
|
|
||||||
# Check that 'go version' and 'go version -m' work on a binary built in module mode.
|
# Check that 'go version' and 'go version -m' work on a binary built in module mode.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue