aboutsummaryrefslogtreecommitdiff
path: root/src/os/stat_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/os/stat_test.go')
-rw-r--r--src/os/stat_test.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/os/stat_test.go b/src/os/stat_test.go
index c876d434fd..72621f257b 100644
--- a/src/os/stat_test.go
+++ b/src/os/stat_test.go
@@ -182,6 +182,31 @@ func testSymlinkSameFile(t *testing.T, path, link string) {
}
}
+func testSymlinkSameFileOpen(t *testing.T, link string) {
+ f, err := os.Open(link)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+ defer f.Close()
+
+ fi, err := f.Stat()
+ if err != nil {
+ t.Error(err)
+ return
+ }
+
+ fi2, err := os.Stat(link)
+ if err != nil {
+ t.Error(err)
+ return
+ }
+
+ if !os.SameFile(fi, fi2) {
+ t.Errorf("os.Open(%q).Stat() and os.Stat(%q) are not the same file", link, link)
+ }
+}
+
func TestDirAndSymlinkStats(t *testing.T) {
testenv.MustHaveSymlink(t)
t.Parallel()
@@ -199,6 +224,7 @@ func TestDirAndSymlinkStats(t *testing.T) {
}
testSymlinkStats(t, dirlink, true)
testSymlinkSameFile(t, dir, dirlink)
+ testSymlinkSameFileOpen(t, dirlink)
linklink := filepath.Join(tmpdir, "linklink")
if err := os.Symlink(dirlink, linklink); err != nil {
@@ -206,6 +232,7 @@ func TestDirAndSymlinkStats(t *testing.T) {
}
testSymlinkStats(t, linklink, true)
testSymlinkSameFile(t, dir, linklink)
+ testSymlinkSameFileOpen(t, linklink)
}
func TestFileAndSymlinkStats(t *testing.T) {
@@ -225,6 +252,7 @@ func TestFileAndSymlinkStats(t *testing.T) {
}
testSymlinkStats(t, filelink, false)
testSymlinkSameFile(t, file, filelink)
+ testSymlinkSameFileOpen(t, filelink)
linklink := filepath.Join(tmpdir, "linklink")
if err := os.Symlink(filelink, linklink); err != nil {
@@ -232,6 +260,7 @@ func TestFileAndSymlinkStats(t *testing.T) {
}
testSymlinkStats(t, linklink, false)
testSymlinkSameFile(t, file, linklink)
+ testSymlinkSameFileOpen(t, linklink)
}
// see issue 27225 for details