Brian Curtin [Tue, 14 Jun 2011 14:52:50 +0000 (09:52 -0500)]
Correct completely broken os.stat behavior on Windows XP.
After 1a3e8db28d49, Windows XP could not os.stat at all due to raising
immediately when GetFinalPathNameByHandle wasn't available (pre-Vista).
The proper behavior in that situation is to just not attempt a traversal
rather than outright rejecting.
This change additionally handles a failed malloc by setting the error code
and returning false.
Brian Curtin [Mon, 13 Jun 2011 20:16:04 +0000 (15:16 -0500)]
Fix #12084. os.stat on Windows wasn't working properly with relative symlinks.
Use of DeviceIoControl to obtain the symlink path via the reparse tag was
removed. The code now uses GetFinalPathNameByHandle in the case of a
symbolic link and works properly given the added test which creates a symbolic
link and calls os.stat on it from multiple locations.
Victor Stinner also noticed an issue with os.lstat following the os.stat
code path when being passed bytes. The posix_lstat function was adjusted to
properly hook up win32_lstat instead of the previous STAT macro (win32_stat).
Victor Stinner [Fri, 10 Jun 2011 14:32:54 +0000 (16:32 +0200)]
Issue #10801: Fix test_unicode_filenames() of test_zipfile
Just try to open files from the ZIP for reading, don't extract them to avoid
UnicodeEncodeError if the filename is not encodable to the filesystem encoding
(e.g. ASCII locale encoding).
Éric Araujo [Fri, 10 Jun 2011 02:29:43 +0000 (04:29 +0200)]
Clean up extra environment variable after packaging tests.
packaging.util.check_environ will define HOME and PLAT if they don’t exist; for
some reason, it does not define PLAT when running the tests from a checkout (so
no regrtest warning) but does when running from an installed Python.
Cleaning up the envvar in test_dist fixes the warning on my machine, but I
suspect that a test runner using a different order to run files or running them
in parallel may have PLAT defined in its environment because of another test.
Quite a lot of code ends up calling check_environ; maybe we should just clean
up PLAT in every test. For now I’m doing this simple fix, we’ll see if we get
bug reports.
Éric Araujo [Fri, 10 Jun 2011 01:53:49 +0000 (03:53 +0200)]
Fix omission in test for packaging install_distinfo command.
The code does not write checksum or file length for .pyc and .pyo in the RECORD
file, in compliance with PEP 376, but the test forgot to take .pyo into
account. This was not caught because there were no .pyo in the checkout, but
after installing there are .pyo files created by compileall, and the test picks
them up.
Rather than wrapping the C _isdir function in a Python function,
just import the C _isdir function directly. Additionally, add in the
docstring which was left out.
Éric Araujo [Thu, 9 Jun 2011 05:47:25 +0000 (07:47 +0200)]
Fix example in packaging test_config.
The example C extension used the “three.fast_taunt” name, but no “three” parent
was defined in the setup.cfg. This did not cause a failure nor even print a
warning, we may want to change that.
Brian Curtin [Wed, 8 Jun 2011 23:43:57 +0000 (18:43 -0500)]
Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
By changing to the Windows GetFileAttributes API in nt._isdir we can figure
out if the path is a directory without opening the file via os.stat. This has
the minor benefit of speeding up os.path.isdir by at least 2x for regular
files and 10-15x improvements were seen on symbolic links (which opened the
file multiple times during os.stat). Since os.path.isdir is used in
several places on interpreter startup, we get a minor speedup in startup time.
Brian Curtin [Wed, 8 Jun 2011 23:17:18 +0000 (18:17 -0500)]
Fix #11583. Changed os.path.isdir to use GetFileAttributes instead of os.stat.
By changing to the Windows GetFileAttributes API in nt._isdir we can figure
out if the path is a directory without opening the file via os.stat. This has
the minor benefit of speeding up os.path.isdir by at least 2x for regular
files and 10-15x improvements were seen on symbolic links (which opened the
file multiple times during os.stat). Since os.path.isdir is used in
several places on interpreter startup, we get a minor speedup in startup time.
Antoine Pitrou [Wed, 8 Jun 2011 15:21:55 +0000 (17:21 +0200)]
Issue #9205: concurrent.futures.ProcessPoolExecutor now detects killed
children and raises BrokenProcessPool in such a situation. Previously it
would reliably freeze/deadlock.
Éric Araujo [Wed, 8 Jun 2011 03:29:39 +0000 (05:29 +0200)]
Fix a few misuses of :option: I missed in r86521.
Extract of the commit message:
Fix usage of :option: in the docs (#9312).
:option: is used to create a link to an option of python, not to mark
up any instance of any arbitrary command-line option. These were
changed to ````.