From 00d86ac99f5dd6afa5bbd7c38ffe1c585edd2387 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sat, 19 Jul 2014 08:53:52 +0000 Subject: libgo: Update to Go 1.3 release. From-SVN: r212837 --- libgo/go/path/filepath/match.go | 2 +- libgo/go/path/filepath/match_test.go | 53 +++++++++++++++++++++++++++++++++++- libgo/go/path/filepath/path.go | 2 +- libgo/go/path/filepath/path_test.go | 5 ++-- libgo/go/path/filepath/path_unix.go | 2 +- 5 files changed, 58 insertions(+), 6 deletions(-) (limited to 'libgo/go/path') diff --git a/libgo/go/path/filepath/match.go b/libgo/go/path/filepath/match.go index 3d84145..a9bcc10 100644 --- a/libgo/go/path/filepath/match.go +++ b/libgo/go/path/filepath/match.go @@ -230,7 +230,7 @@ func getEsc(chunk string) (r rune, nchunk string, err error) { // func Glob(pattern string) (matches []string, err error) { if !hasMeta(pattern) { - if _, err = os.Stat(pattern); err != nil { + if _, err = os.Lstat(pattern); err != nil { return nil, nil } return []string{pattern}, nil diff --git a/libgo/go/path/filepath/match_test.go b/libgo/go/path/filepath/match_test.go index 6a2fd92..9886620 100644 --- a/libgo/go/path/filepath/match_test.go +++ b/libgo/go/path/filepath/match_test.go @@ -2,9 +2,12 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -package filepath +package filepath_test import ( + "io/ioutil" + "os" + . "path/filepath" "runtime" "strings" "testing" @@ -154,3 +157,51 @@ func TestGlobError(t *testing.T) { t.Error("expected error for bad pattern; got none") } } + +var globSymlinkTests = []struct { + path, dest string + brokenLink bool +}{ + {"test1", "link1", false}, + {"test2", "link2", true}, +} + +func TestGlobSymlink(t *testing.T) { + switch runtime.GOOS { + case "nacl", "plan9", "windows": + t.Skipf("skipping on %s", runtime.GOOS) + } + + tmpDir, err := ioutil.TempDir("", "globsymlink") + if err != nil { + t.Fatal("creating temp dir:", err) + } + defer os.RemoveAll(tmpDir) + + for _, tt := range globSymlinkTests { + path := Join(tmpDir, tt.path) + dest := Join(tmpDir, tt.dest) + f, err := os.Create(path) + if err != nil { + t.Fatal(err) + } + if err := f.Close(); err != nil { + t.Fatal(err) + } + err = os.Symlink(path, dest) + if err != nil { + t.Fatal(err) + } + if tt.brokenLink { + // Break the symlink. + os.Remove(path) + } + matches, err := Glob(dest) + if err != nil { + t.Errorf("GlobSymlink error for %q: %s", dest, err) + } + if !contains(matches, dest) { + t.Errorf("Glob(%#q) = %#v want %v", dest, matches, dest) + } + } +} diff --git a/libgo/go/path/filepath/path.go b/libgo/go/path/filepath/path.go index 65d29bf..71603cc 100644 --- a/libgo/go/path/filepath/path.go +++ b/libgo/go/path/filepath/path.go @@ -67,7 +67,7 @@ const ( // along with the non-.. element that precedes it. // 4. Eliminate .. elements that begin a rooted path: // that is, replace "/.." by "/" at the beginning of a path, -// assuming Separator is '/'. +// assuming Separator is '/'. // // The returned path ends in a slash only if it represents a root directory, // such as "/" on Unix or `C:\` on Windows. diff --git a/libgo/go/path/filepath/path_test.go b/libgo/go/path/filepath/path_test.go index dc87d79..6d11394 100644 --- a/libgo/go/path/filepath/path_test.go +++ b/libgo/go/path/filepath/path_test.go @@ -694,8 +694,9 @@ func simpleJoin(dir, path string) string { } func TestEvalSymlinks(t *testing.T) { - if runtime.GOOS == "plan9" { - t.Skip("Skipping test: symlinks don't exist under Plan 9") + switch runtime.GOOS { + case "nacl", "plan9": + t.Skipf("skipping on %s", runtime.GOOS) } tmpDir, err := ioutil.TempDir("", "evalsymlink") diff --git a/libgo/go/path/filepath/path_unix.go b/libgo/go/path/filepath/path_unix.go index 2be675c..7aba0ab 100644 --- a/libgo/go/path/filepath/path_unix.go +++ b/libgo/go/path/filepath/path_unix.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris package filepath -- cgit v1.1