mirror of
https://github.com/golang/go
synced 2024-11-18 06:04:53 -07:00
path/filepath: handle "C:." correctly in EvalSymlinks on Windows
Fixes #16886 Change-Id: Idfacb0cf44d9994559c8e09032b4595887e76433 Reviewed-on: https://go-review.googlesource.com/28214 Reviewed-by: Alex Brainman <alex.brainman@gmail.com> Run-TryBot: Alex Brainman <alex.brainman@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
1a04b4abe7
commit
199b17cca8
@ -877,6 +877,40 @@ func TestEvalSymlinks(t *testing.T) {
|
||||
t.Errorf(`EvalSymlinks(".") in %q directory returns %q, want "." or %q`, d.path, p, want)
|
||||
}()
|
||||
|
||||
// test EvalSymlinks("C:.") on Windows
|
||||
if runtime.GOOS == "windows" {
|
||||
func() {
|
||||
defer func() {
|
||||
err := os.Chdir(wd)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}()
|
||||
|
||||
err := os.Chdir(path)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
volDot := filepath.VolumeName(tmpDir) + "."
|
||||
|
||||
p, err := filepath.EvalSymlinks(volDot)
|
||||
if err != nil {
|
||||
t.Errorf(`EvalSymlinks("%s") in %q directory error: %v`, volDot, d.path, err)
|
||||
return
|
||||
}
|
||||
if p == volDot {
|
||||
return
|
||||
}
|
||||
want := filepath.Clean(findEvalSymlinksTestDirsDest(t, testdirs, d.path))
|
||||
if p == want {
|
||||
return
|
||||
}
|
||||
t.Errorf(`EvalSymlinks("%s") in %q directory returns %q, want %q or %q`, volDot, d.path, p, volDot, want)
|
||||
}()
|
||||
}
|
||||
|
||||
// test EvalSymlinks(".."+path)
|
||||
func() {
|
||||
defer func() {
|
||||
|
@ -105,8 +105,9 @@ func walkSymlinks(path string) (string, error) {
|
||||
// directory is a symlink. Stop the walk, if symlink
|
||||
// target is not absolute path, and return "."
|
||||
// to the caller (just like unix does).
|
||||
if path == "." && !IsAbs(newpath) {
|
||||
return ".", nil
|
||||
// Same for "C:.".
|
||||
if path[volumeNameLen(path):] == "." && !IsAbs(newpath) {
|
||||
return path, nil
|
||||
}
|
||||
}
|
||||
if i == linksWalked {
|
||||
|
Loading…
Reference in New Issue
Block a user