From 239ec73e66b4c4706b2261082857d5afa5c53da9 Mon Sep 17 00:00:00 2001 From: Chris Broadfoot Date: Thu, 4 Jun 2015 16:16:14 -0700 Subject: [PATCH] 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 --- src/cmd/go/go_test.go | 12 +++++++++++- src/cmd/go/main.go | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) 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) } -- 2.50.0