From: Chris Broadfoot Date: Thu, 4 Jun 2015 23:16:14 +0000 (-0700) Subject: cmd/go: reject relative paths that don't start with a dot (.) X-Git-Tag: go1.5beta1~291 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=239ec73e66b4c4706b2261082857d5afa5c53da9;p=gostls13.git cmd/go: reject relative paths that don't start with a dot (.) Change-Id: Idc4a7fdb561ba5b3b52094d895deaf3fcdf475bf Reviewed-on: https://go-review.googlesource.com/10716 Reviewed-by: Andrew Gerrand --- diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index 4d9d90ad58..87ff6e57f5 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -1036,11 +1036,12 @@ func TestInstalls(t *testing.T) { tg.wantExecutable(tg.path("bin/progname")+exeSuffix, "did not install progname to $GOPATH/bin/progname") } -func TestRejectRelativePathsInGOPATHCommandLinePackage(t *testing.T) { +func TestRejectRelativeDotPathInGOPATHCommandLinePackage(t *testing.T) { tg := testgo(t) defer tg.cleanup() tg.setenv("GOPATH", ".") tg.runFail("build", "testdata/src/go-cmd-test/helloworld.go") + tg.grepStderr("GOPATH entry is relative", "expected an error message rejecting relative GOPATH entries") } func TestRejectRelativePathsInGOPATH(t *testing.T) { @@ -1049,6 +1050,15 @@ func TestRejectRelativePathsInGOPATH(t *testing.T) { sep := string(filepath.ListSeparator) tg.setenv("GOPATH", sep+filepath.Join(tg.pwd(), "testdata")+sep+".") tg.runFail("build", "go-cmd-test") + tg.grepStderr("GOPATH entry is relative", "expected an error message rejecting relative GOPATH entries") +} + +func TestRejectRelativePathsInGOPATHCommandLinePackage(t *testing.T) { + tg := testgo(t) + defer tg.cleanup() + tg.setenv("GOPATH", "testdata") + tg.runFail("build", "testdata/src/go-cmd-test/helloworld.go") + tg.grepStderr("GOPATH entry is relative", "expected an error message rejecting relative GOPATH entries") } // Issue 4104. diff --git a/src/cmd/go/main.go b/src/cmd/go/main.go index b0d74484a6..1bd75401cb 100644 --- a/src/cmd/go/main.go +++ b/src/cmd/go/main.go @@ -142,7 +142,7 @@ func main() { fmt.Fprintf(os.Stderr, "go: GOPATH entry cannot start with shell metacharacter '~': %q\n", p) os.Exit(2) } - if build.IsLocalImport(p) { + if !filepath.IsAbs(p) { fmt.Fprintf(os.Stderr, "go: GOPATH entry is relative; must be absolute path: %q.\nRun 'go help gopath' for usage.\n", p) os.Exit(2) }