Revert "go/buildutil: handle symlinks in filenames"

Reason: ContainingPackage should do all I/O through build.Context.

This reverts commit 3a9a2cbbc44c28889bacca49eb91cdd645eb8fe5.

Change-Id: I3897d8da5026ddc470989e3f239540286e89df4d
Reviewed-on: https://go-review.googlesource.com/33922
Reviewed-by: Alan Donovan <adonovan@google.com>
diff --git a/go/buildutil/util.go b/go/buildutil/util.go
index c2d2843..6dc0cfb 100644
--- a/go/buildutil/util.go
+++ b/go/buildutil/util.go
@@ -66,21 +66,11 @@
 	// paths will not use `\` unless the PathSeparator
 	// is also `\`, thus we can rely on filepath.ToSlash for some sanity.
 
-	resolvedFilename, err := filepath.EvalSymlinks(filepath.Dir(filename))
-	if err != nil {
-		return nil, fmt.Errorf("can't evaluate symlinks of %s: %v", path.Dir(filename), err)
-	}
-
-	resolvedDir := filepath.ToSlash(resolvedFilename)
-	dirSlash := resolvedDir + "/"
+	dirSlash := path.Dir(filepath.ToSlash(filename)) + "/"
 
 	// We assume that no source root (GOPATH[i] or GOROOT) contains any other.
 	for _, srcdir := range ctxt.SrcDirs() {
-		resolvedSrcdir, err := filepath.EvalSymlinks(srcdir)
-		if err != nil {
-			continue // e.g. non-existent dir on $GOPATH
-		}
-		srcdirSlash := filepath.ToSlash(resolvedSrcdir) + "/"
+		srcdirSlash := filepath.ToSlash(srcdir) + "/"
 		if dirHasPrefix(dirSlash, srcdirSlash) {
 			importPath := dirSlash[len(srcdirSlash) : len(dirSlash)-len("/")]
 			return ctxt.Import(importPath, dir, build.FindOnly)
diff --git a/go/buildutil/util_test.go b/go/buildutil/util_test.go
index 148214d..dd55533 100644
--- a/go/buildutil/util_test.go
+++ b/go/buildutil/util_test.go
@@ -10,7 +10,6 @@
 
 import (
 	"go/build"
-	"io/ioutil"
 	"os"
 	"path/filepath"
 	"runtime"
@@ -24,46 +23,22 @@
 	goroot := runtime.GOROOT()
 	gopath := filepath.SplitList(os.Getenv("GOPATH"))[0]
 
-	// Make a symlink to gopath for test
-	tmp, err := ioutil.TempDir(os.TempDir(), "go")
-	if err != nil {
-		t.Errorf("Unable to create a temporary directory in %s", os.TempDir())
+	tests := [][2]string{
+		{goroot + "/src/fmt/print.go", "fmt"},
+		{goroot + "/src/encoding/json/foo.go", "encoding/json"},
+		{goroot + "/src/encoding/missing/foo.go", "(not found)"},
+		{gopath + "/src/golang.org/x/tools/go/buildutil/util_test.go",
+			"golang.org/x/tools/go/buildutil"},
 	}
-
-	// symlink between $GOPATH/src and /tmp/go/src
-	// in order to test all possible symlink cases
-	if err := os.Symlink(gopath+"/src", tmp+"/src"); err != nil {
-		t.Fatal(err)
-	}
-
-	defer os.RemoveAll(tmp)
-
-	for _, test := range []struct {
-		gopath, filename, wantPkg string
-	}{
-		{gopath, goroot + "/src/fmt/print.go", "fmt"},
-		{gopath, goroot + "/src/encoding/json/foo.go", "encoding/json"},
-		{gopath, goroot + "/src/encoding/missing/foo.go", "(not found)"},
-		{gopath, gopath + "/src/golang.org/x/tools/go/buildutil/util_test.go",
-			"golang.org/x/tools/go/buildutil"},
-		{gopath, tmp + "/src/golang.org/x/tools/go/buildutil/util_test.go",
-			"golang.org/x/tools/go/buildutil"},
-		{tmp, gopath + "/src/golang.org/x/tools/go/buildutil/util_test.go",
-			"golang.org/x/tools/go/buildutil"},
-		{tmp, tmp + "/src/golang.org/x/tools/go/buildutil/util_test.go",
-			"golang.org/x/tools/go/buildutil"},
-	} {
-		var got string
-		var buildContext = build.Default
-		buildContext.GOPATH = test.gopath
-		bp, err := buildutil.ContainingPackage(&buildContext, ".", test.filename)
+	for _, test := range tests {
+		file, want := test[0], test[1]
+		bp, err := buildutil.ContainingPackage(&build.Default, ".", file)
+		got := bp.ImportPath
 		if err != nil {
 			got = "(not found)"
-		} else {
-			got = bp.ImportPath
 		}
-		if got != test.wantPkg {
-			t.Errorf("ContainingPackage(%q) = %s, want %s", test.filename, got, test.wantPkg)
+		if got != want {
+			t.Errorf("ContainingPackage(%q) = %s, want %s", file, got, want)
 		}
 	}