mirror of
https://github.com/golang/go
synced 2024-11-23 09:50:03 -07:00
cmd/build: reject non-existant directories in ImportDir
Re-apply @adg's CL https://golang.org/cl/7129048 that was previously disabled in https://golang.org/cl/7235052 because it broke `godoc net/http` for go1.1. Currently `godoc net/http` seems to work fine with this CL. Fixes #3428. Change-Id: I7df06df02fd62dededac6ec60bea62561be59cf1 Reviewed-on: https://go-review.googlesource.com/23013 Run-TryBot: Andrew Gerrand <adg@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Andrew Gerrand <adg@golang.org>
This commit is contained in:
parent
7ae273923c
commit
7af2ce3f15
@ -403,7 +403,11 @@ func (p *Package) IsCommand() bool {
|
||||
// ImportDir is like Import but processes the Go package found in
|
||||
// the named directory.
|
||||
func (ctxt *Context) ImportDir(dir string, mode ImportMode) (*Package, error) {
|
||||
return ctxt.Import(".", dir, mode)
|
||||
p, err := ctxt.Import(".", dir, mode)
|
||||
if err == nil && !ctxt.isDir(p.Dir) {
|
||||
err = fmt.Errorf("%q is not a directory", p.Dir)
|
||||
}
|
||||
return p, err
|
||||
}
|
||||
|
||||
// NoGoError is the error used by Import to describe a directory
|
||||
|
@ -5,6 +5,7 @@
|
||||
package build
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"internal/testenv"
|
||||
"io"
|
||||
"os"
|
||||
@ -345,3 +346,13 @@ func TestImportVendorParentFailure(t *testing.T) {
|
||||
t.Fatalf("error on failed import does not mention GOROOT/src/vendor directory:\n%s", e)
|
||||
}
|
||||
}
|
||||
|
||||
// Issue 3248
|
||||
func TestBogusDirectory(t *testing.T) {
|
||||
const dir = "/foo/bar/baz/gopher"
|
||||
_, err := ImportDir(dir, FindOnly)
|
||||
want := fmt.Sprintf("%q is not a directory", filepath.FromSlash(dir))
|
||||
if err == nil || err.Error() != want {
|
||||
t.Errorf("got error %q, want %q", err, want)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user