aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZev Goldstein <zev.goldstein@gmail.com>2016-10-28 11:42:27 -0400
committerBrad Fitzpatrick <bradfitz@golang.org>2016-10-29 16:44:45 +0000
commit8f91865e1b2f2df95fb4833babbd0a8fb26085c8 (patch)
tree0ee0ee45209911042785e28e883d2c5c07007429 /src
parent833f57ed502d686ce054ff557cf3bf5b6ed1a1d2 (diff)
downloadgo-8f91865e1b2f2df95fb4833babbd0a8fb26085c8.tar.xz
path/filepath: fix Abs on Windows
The filepath.Abs function in windows did not call Clean as the documentation claimed. This change not only fixes that behavior but also adjusts TestAbs to verify Abs calls Clean as documented. Fixes #17210 Change-Id: I20c5f5026042fd7bd9d929ff5b17c8b2653f8afe Reviewed-on: https://go-review.googlesource.com/32292 Reviewed-by: Alex Brainman <alex.brainman@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Alex Brainman <alex.brainman@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src')
-rw-r--r--src/path/filepath/path_test.go5
-rw-r--r--src/path/filepath/path_windows.go6
2 files changed, 9 insertions, 2 deletions
diff --git a/src/path/filepath/path_test.go b/src/path/filepath/path_test.go
index 94f9c01459..921b23842b 100644
--- a/src/path/filepath/path_test.go
+++ b/src/path/filepath/path_test.go
@@ -1061,13 +1061,16 @@ var absTestDirs = []string{
var absTests = []string{
".",
"b",
+ "b/",
"../a",
"../a/b",
"../a/b/./c/../../.././a",
+ "../a/b/./c/../../.././a/",
"$",
"$/.",
"$/a/../a/b",
"$/a/b/c/../../.././a",
+ "$/a/b/c/../../.././a/",
}
func TestAbs(t *testing.T) {
@@ -1132,7 +1135,7 @@ func TestAbs(t *testing.T) {
if !filepath.IsAbs(abspath) {
t.Errorf("Abs(%q)=%q, not an absolute path", path, abspath)
}
- if filepath.IsAbs(path) && abspath != filepath.Clean(path) {
+ if filepath.IsAbs(abspath) && abspath != filepath.Clean(abspath) {
t.Errorf("Abs(%q)=%q, isn't clean", path, abspath)
}
}
diff --git a/src/path/filepath/path_windows.go b/src/path/filepath/path_windows.go
index a74b6469a9..359703de26 100644
--- a/src/path/filepath/path_windows.go
+++ b/src/path/filepath/path_windows.go
@@ -106,7 +106,11 @@ func splitList(path string) []string {
}
func abs(path string) (string, error) {
- return syscall.FullPath(path)
+ fullPath, err := syscall.FullPath(path)
+ if err != nil {
+ return "", err
+ }
+ return Clean(fullPath), nil
}
func join(elem []string) string {