]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: report correct directory for 'no version control'
authorRuss Cox <rsc@golang.org>
Tue, 10 Sep 2013 19:28:29 +0000 (15:28 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 10 Sep 2013 19:28:29 +0000 (15:28 -0400)
The scan starts at the directory we care about and works
backward to the GOPATH root. The error should say the
original directory name, not the name of the GOPATH root.

Fixes #6175.

R=golang-dev, minux.ma
CC=golang-dev
https://golang.org/cl/13366050

src/cmd/go/test.bash
src/cmd/go/vcs.go

index 52d2f08337900b1cce7c864672faf5475e8a30f8..17358279c84853680a0e186089fd30f226358b96 100755 (executable)
@@ -139,6 +139,18 @@ if ! ./testgo test ./testdata/testimport/*.go; then
        ok=false
 fi
 
+TEST version control error message includes correct directory
+export GOPATH=$(pwd)/testdata/shadow/root1
+if ./testgo get -u foo 2>testdata/err; then
+       echo "go get -u foo succeeded unexpectedly"
+       ok=false
+elif ! grep testdata/shadow/root1/src/foo testdata/err >/dev/null; then
+       echo "go get -u error does not mention shadow/root1/src/foo:"
+       cat testdata/err
+       ok=false
+fi
+unset GOPATH
+
 # Test that without $GOBIN set, binaries get installed
 # into the GOPATH bin directory.
 TEST install into GOPATH
index 58040e3d41124f436bf30f0a08b7d8f53e506bc7..655549009f1b29a0eb112551c09ef688822dbe20 100644 (file)
@@ -321,6 +321,7 @@ func vcsForDir(p *Package) (vcs *vcsCmd, root string, err error) {
                return nil, "", fmt.Errorf("directory %q is outside source root %q", dir, srcRoot)
        }
 
+       origDir := dir
        for len(dir) > len(srcRoot) {
                for _, vcs := range vcsList {
                        if fi, err := os.Stat(filepath.Join(dir, "."+vcs.cmd)); err == nil && fi.IsDir() {
@@ -337,7 +338,7 @@ func vcsForDir(p *Package) (vcs *vcsCmd, root string, err error) {
                dir = ndir
        }
 
-       return nil, "", fmt.Errorf("directory %q is not using a known version control system", dir)
+       return nil, "", fmt.Errorf("directory %q is not using a known version control system", origDir)
 }
 
 // repoRoot represents a version control system, a repo, and a root of