Revert "Updated getPkgPath to use package filepath instead of path"

This commit is contained in:
Vasily Romanov
2017-04-25 00:15:07 +03:00
committed by GitHub
parent c9eba14dbf
commit 88c4f6c7a5
4 changed files with 65 additions and 67 deletions
-30
View File
@@ -1,13 +1,9 @@
package parser
import (
"fmt"
"go/ast"
"go/parser"
"go/token"
"os"
"path"
"path/filepath"
"strings"
)
@@ -93,29 +89,3 @@ func (p *Parser) Parse(fname string, isDir bool) error {
}
return nil
}
func getPkgPath(fname string, isDir bool) (string, error) {
fname, err := filepath.Abs(fname)
if err != nil {
return "", err
}
for _, p := range filepath.SplitList(os.Getenv("GOPATH")) {
gopath := filepath.Join(p, "src")
pkg, err := filepath.Rel(gopath, fname)
if err != nil {
continue
}
if pkg != fname {
p := normalizePath(pkg)
if !isDir {
return path.Dir(p), nil
}
return p, nil
}
}
return "", fmt.Errorf("file '%v' is not in GOPATH", fname)
}
-26
View File
@@ -1,26 +0,0 @@
package parser
import "testing"
func TestGetPkgPath(t *testing.T) {
cases := []struct {
fname string
isDir bool
}{
{"parser.go", false},
{".", true},
}
exp := "github.com/mailru/easyjson/parser"
for _, tc := range cases {
pkg, err := getPkgPath(tc.fname, tc.isDir)
if err != nil {
t.Error(err)
}
if pkg != exp {
t.Errorf("in: \"%s\" isDir: %v want: %s got: %s", tc.fname, tc.isDir, exp, pkg)
}
}
}
+28 -2
View File
@@ -2,6 +2,32 @@
package parser
func normalizePath(path string) string {
return path
import (
"fmt"
"os"
"path"
"strings"
)
func getPkgPath(fname string, isDir bool) (string, error) {
if !path.IsAbs(fname) {
pwd, err := os.Getwd()
if err != nil {
return "", err
}
fname = path.Join(pwd, fname)
}
for _, p := range strings.Split(os.Getenv("GOPATH"), ":") {
prefix := path.Join(p, "src") + "/"
if rel := strings.TrimPrefix(fname, prefix); rel != fname {
if !isDir {
return path.Dir(rel), nil
} else {
return path.Clean(rel), nil
}
}
}
return "", fmt.Errorf("file '%v' is not in GOPATH", fname)
}
+37 -9
View File
@@ -1,9 +1,37 @@
package parser
import (
"strings"
)
func normalizePath(path string) string {
return strings.Replace(path, "\\", "/", -1)
}
package parser
import (
"fmt"
"os"
"path"
"strings"
)
func normalizePath(path string) string {
return strings.Replace(path, "\\", "/", -1)
}
func getPkgPath(fname string, isDir bool) (string, error) {
if !path.IsAbs(fname) {
pwd, err := os.Getwd()
if err != nil {
return "", err
}
fname = path.Join(pwd, fname)
}
fname = normalizePath(fname)
for _, p := range strings.Split(os.Getenv("GOPATH"), ";") {
prefix := path.Join(normalizePath(p), "src") + "/"
if rel := strings.TrimPrefix(fname, prefix); rel != fname {
if !isDir {
return path.Dir(rel), nil
} else {
return path.Clean(rel), nil
}
}
}
return "", fmt.Errorf("file '%v' is not in GOPATH", fname)
}