diff options
Diffstat (limited to 'src/os/stat_test.go')
| -rw-r--r-- | src/os/stat_test.go | 29 |
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 |
