Implement #1578269. Patch by Jason R. Coombs.

Added Windows support for os.symlink when run on Windows 6.0 or greater,
aka Vista. Previous Windows versions will raise NotImplementedError
when trying to symlink.

Includes numerous test updates and additions to test_os, including
a symlink_support module because of the fact that privilege escalation
is required in order to run the tests to ensure that the user is able
to create symlinks. By default, accounts do not have the required
privilege, so the escalation code will have to be exposed later (or
documented on how to do so). I'll be following up with that work next.

Note that the tests use ctypes, which was agreed on during the PyCon
language summit.
This commit is contained in:
Brian Curtin 2010-07-08 21:39:08 +00:00
parent 0dd8f7890a
commit d40e6f70a5
18 changed files with 1161 additions and 275 deletions

View file

@ -231,11 +231,15 @@ applications should use string objects to access all files.
.. function:: samefile(path1, path2)
Return ``True`` if both pathname arguments refer to the same file or directory
(as indicated by device number and i-node number). Raise an exception if a
:func:`os.stat` call on either pathname fails.
Return ``True`` if both pathname arguments refer to the same file or directory.
On Unix, this is determined by the device number and i-node number and raises an
exception if a :func:`os.stat` call on either pathname fails.
Availability: Unix.
On Windows, two files are the same if they resolve to the same final path
name using the Windows API call GetFinalPathNameByHandle and this function
raises an exception if handles cannot be obtained to either file.
Availability: Windows, Unix.
.. function:: sameopenfile(fp1, fp2)