internal/gen: allow tests to pass if GOPATH is not set

This may make it easier to pass tests alternative build setups.

Change-Id: Ib0465792e198261031449536f615200e55e2be0e
Reviewed-on: https://go-review.googlesource.com/31392
TryBot-Result: Gobot Gobot <gobot@golang.org>
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/internal/gen/gen.go b/internal/gen/gen.go
index 9eb2987..84c699f 100644
--- a/internal/gen/gen.go
+++ b/internal/gen/gen.go
@@ -85,7 +85,11 @@
 
 // IsLocal reports whether data files are available locally.
 func IsLocal() bool {
-	if _, err := os.Stat(localReadmeFile()); err != nil {
+	dir, err := localReadmeFile()
+	if err != nil {
+		return false
+	}
+	if _, err = os.Stat(dir); err != nil {
 		return false
 	}
 	return true
@@ -130,19 +134,22 @@
 
 const permissions = 0755
 
-func localReadmeFile() string {
+func localReadmeFile() (string, error) {
 	p, err := build.Import("golang.org/x/text", "", build.FindOnly)
 	if err != nil {
-		log.Fatalf("Could not locate package: %v", err)
+		return "", fmt.Errorf("Could not locate package: %v", err)
 	}
-	return filepath.Join(p.Dir, "DATA", "README")
+	return filepath.Join(p.Dir, "DATA", "README"), nil
 }
 
 func getLocalDir() string {
 	dirMutex.Lock()
 	defer dirMutex.Unlock()
 
-	readme := localReadmeFile()
+	readme, err := localReadmeFile()
+	if err != nil {
+		log.Fatal(err)
+	}
 	dir := filepath.Dir(readme)
 	if _, err := os.Stat(readme); err != nil {
 		if err := os.MkdirAll(dir, permissions); err != nil {