Implement #7566 - os.path.sameopenfile for Windows.

This uses the GetFileInformationByHandle function to return a tuple of values
to identify a file, then ntpath.sameopenfile compares file tuples, which
is exposed as os.path.sameopenfile.
This commit is contained in:
Brian Curtin 2010-09-06 17:07:27 +00:00
parent 5c997b8d90
commit 6285774f06
5 changed files with 52 additions and 2 deletions

View file

@ -2,6 +2,7 @@ import ntpath
import os
from test.support import TestFailed
from test import support, test_genericpath
from tempfile import TemporaryFile
import unittest
@ -237,6 +238,18 @@ class TestNtpath(unittest.TestCase):
tester('ntpath.relpath("/a", "/a")', '.')
tester('ntpath.relpath("/a/b", "/a/b")', '.')
def test_sameopenfile(self):
with TemporaryFile() as tf1, TemporaryFile() as tf2:
# Make sure the same file is really the same
self.assertTrue(ntpath.sameopenfile(tf1.fileno(), tf1.fileno()))
# Make sure different files are really different
self.assertFalse(ntpath.sameopenfile(tf1.fileno(), tf2.fileno()))
# Make sure invalid values don't cause issues
with self.assertRaises(ValueError):
# Invalid file descriptors shouldn't display assert
# dialogs (#4804)
ntpath.sameopenfile(-1, -1)
class NtCommonTest(test_genericpath.CommonTest):
pathmodule = ntpath